亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 220 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號