为了账号安全,请及时绑定邮箱和手机立即绑定

C# - 如何从继承类型转换为运行时类型

C# - 如何从继承类型转换为运行时类型

C#
Helenr 2021-09-19 16:14:52
我在运行时处理正确类型时遇到问题。我希望我的代码根据参数类型动态检测应该调用哪个处理程序。我不想在代码中将 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信