我有以下代碼試圖在運行時附加一個通用的事件處理程序:爲什麼我無法使用EventHandler處理EventHandler <XXX>?
EventInfo info = source.GetType().GetEvent("EventWithArgsInheritingFromEventArg");
info.AddEventHandler(source, new EventHandler((obj, args) => DoSomething()));
當我嘗試這樣做,我得到以下異常:
類型的「對象System.EventHandler '無法轉換爲類型 'System.Windows.Controls.DataGridSortingEventHandler'。
我的理解是,具有簽名(對象發件人,EventArgs e)的方法可以處理帶有從EventArgs繼承的參數的任何事件嗎?
我的方法有什麼問題?
感謝
編輯:可這有什麼區別? DaraGridSortingEventHandler不會從EventHandler繼承嗎?
也許這就是協方差/逆變廢話?這聽起來好像某個地方有從EventHandler向DataGridSortingEventHandler的倒下.. –
@LewsTherin:可能是。當我必須處理這些術語時,我總是頭疼...... –
我也是:(爲了嘗試解決它,也許你應該發送一個派生類型的DataGrid的事件處理函數 –