我有一个 Windows Phone 页面 (MainPage),在代码隐藏中,我想动态添加一个事件处理程序 - 例如添加到 MouseEnter 事件。诀窍是,我希望这个事件处理程序将事件参数作为一个对象:
private void MyEventHandler(object sender, object args)
{
}
(原因是这是一个简化的例子)
这有效:
this.MouseEnter += MyEventHandler;
但这会引发 ArgumentException:
var handlerType = Type.GetType("System.EventHandler`1").
MakeGenericType(typeof(EventArgs));
this.GetType().GetEvent("Hold").AddEventHandler(
this, Delegate.CreateDelegate(handlerType, this, "MyEventHandler"));
异常的消息是:“无法绑定到目标方法,因为它的签名或安全透明度与委托类型的不兼容。” 如果我更改事件处理程序的签名,一切正常,但我想将其保留为“对象”或“动态”。
如何使用 AddEventHandler 调用添加事件处理程序?
非常感谢任何帮助。