我在运行时处理正确类型时遇到问题。我希望我的代码根据参数类型动态检测应该调用哪个处理程序。我不想在代码中将 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 回答
- 1 回答
- 0 关注
- 201 浏览
添加回答
举报
0/150
提交
取消