我在運行時處理正確類型時遇到問題。我希望我的代碼根據參數類型動態檢測應該調用哪個處理程序。我不想在代碼中將 TEvent 轉換為正確的類型。所有處理程序都繼承自我的界面:public interface IAbstractHandler < in T> { void Handle(T evnt);}例子:public class SpecificEventHandler: IAbstractHandler< SpecificEvent>{ public void Handle(SpecificEvent evnt) { .... }}TEvent.cs:public class TEvent{}處理程序中使用的所有其他事件都源自 TEvent。這是一些代碼:List<TEvent> eventItems = new List<TEvent>();....foreach (var evt in eventItems) { ... dynamic eventHandler = ResolveEventHandler(evt.GetType().Name); if (evt is MySubtypeEvent subEvent) { eventHandler.Handle(subEvent); // <-- this works, but I don't want this. } eventHandler.Handle(evt); // <-- And this fails, because 'evt' is seemingly // a TEvent even though it's of the correct subclass.}我正在尋找的是一種使 'evt' 不是 TEvent 而是真正類型的方法,但無需對其進行硬編碼,這將使我的 'eventHandler.Handle()' 方法起作用(我認為)。
- 1 回答
- 0 關注
- 220 瀏覽
添加回答
舉報
0/150
提交
取消