Хорошо, что я пытаюсь сделать следующее:Способ перегрузки: Воронка вызов перегрузки аргумента производного класса
protected bool ValidAdvert(Base item)
{
throw ThisIsAnAbstractClassException();
}
protected bool ValidAdvert(Derived1 item)
{
return ADerived1SpecificPredicate;
}
protected bool ValidAdvert(Derived2 item)
{
return ADerived2SpecificPredicate;
}
И есть производные версии класса метода можно назвать, когда класс Base передаются метод. Базовый класс является абстрактным, поэтому теоретически это возможно?
Прежде чем кто-то скажет что-то о перегрузке метода на самих классах, логика внутри методов опирается на большое количество различных условий, ни одна из которых не связана, и ни одна из них не связана непосредственно с базовым/производным классом (например, состояние входа и т.д.)
Также умный и избегает возиться с различными производными классами (я бы хотел, чтобы их было всего 2!). –
довольно примечания: вам нужно отбрасывать bool по возврату, а метод. Invoke берет [] объектов, и поэтому дерьмо, если вы попытаетесь пройти только 1 :) Спасибо, хотя! –
@Ed - Я считаю, что сохранение предиката с производным классом на самом деле является предпочтительным методом. Хранение производной логики класса в базовом классе создает обратную связь между ними. Я не вижу в этом ничего хорошего. Базовый класс не должен знать ничего о своих производных классах. – tvanfosson