好吧,我想做到以下幾點:方法重載:漏斗調用派生類的說法超載
protected bool ValidAdvert(Base item)
{
throw ThisIsAnAbstractClassException();
}
protected bool ValidAdvert(Derived1 item)
{
return ADerived1SpecificPredicate;
}
protected bool ValidAdvert(Derived2 item)
{
return ADerived2SpecificPredicate;
}
而且有方法的派生類版本中的,當一個基類被傳遞到方法。基類是抽象的,所以這在理論上應該是可能的?
在有人說過關於重載方法本身的方法之前,方法中的邏輯依賴於大量不同的條件,這些條件中沒有一個是相關的,並且它們都不直接與Base/Derived類相關(如登錄狀態等)
也很聰明,並避免與各種派生類混淆(我希望只有2!)。 –
相當的筆記:你需要在返回時投射到bool,並且method.Invoke需要一個[]對象,所以如果你嘗試並傳遞1,那麼這樣就會發癢:)但是謝謝! –
@Ed - 我認爲保留派生類的謂詞實際上是首選方法。將派生類特定邏輯存儲在基類中會在兩者之間建立反向耦合。我不認爲這是一件好事。基類不需要知道其派生類的任何內容。 – tvanfosson