【发布时间】:2013-07-13 04:36:14
【问题描述】:
我有以下代码试图在运行时附加通用事件处理程序:
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 事件处理程序。
-
根据MSDNDataGridSortingEventArgs 肯定派生自EventArgs
-
您使用的是 .NET 4 吗?委托对象差异仅在 .NET 4 中引入...