基類的一個子保護方法得到了下面的代碼你怎麼稱呼從動態
protected virtual void InternalChange(DomainEvent @event)
{
((dynamic) this).Apply(@event);
}
子對象實現通過一些領域來處理事件的邏輯,例如
protected Apply (Message1 message)
{
}
protected Apply (Message2 message)
{
}
然而,這給出了一個錯誤,說它無法訪問。我試過虛擬但沒有運氣..
任何想法?希望沒有像這種方法反射。 (例如http://blogs.msdn.com/b/davidebb/archive/2010/01/18/use-c-4-0-dynamic-to-drastically-simplify-your-private-reflection-code.aspx)
更多信息我可以將InternalChange移動到子類,但是id沒有讓子進行調度。
編輯現在我使用這個在孩子(和作出的抽象父)的作品,但它醜陋的ID,而實施者不用擔心調度。
protected void Handle(DomainEvent message)
{
Handle ((dynamic) message);
}
Message1和Message2是DomainEvent類型,這是我需要的棘手部分運行時通過動態投射/重載...這也是爲什麼我不能將抽象方法放在基類中,因爲我不知道參數實現者將使用。 – user1496062
如果'Message1'和'Message2'繼承自'DomainEvent',則不能上傳該方向。我建議你使用關鍵字'as'來確定發送到'InternalChange'的實際類型。 – Matthew
但是代碼並不知道它來自事件源DB的具體類型......當然,我可以創建一個case語句或使用反射,但有沒有更好的方法? – user1496062