我正在尝试根据一个或多个事件的名称向'myObject'添加事件处理程序。 'myObject'有一个名为'MyEvent'的事件,我有一个名为'MyEventHandler'的公共事件处理程序(我不需要通过名称获取,但是在下面执行以获取MethodInfo)。
这是我到目前为止所做的:
EventInfo eventInfo = myObject.GetType().GetEvent("MyEvent");
MethodInfo handlerInfo = GetType().GetMethod("MyEventHandler");
if (eventInfo != null && handlerInfo != null)
eventInfo.AddEventHandler(
this,
Delegate.CreateDelegate(eventInfo.EventHandlerType, handlerInfo)
);
我收到此错误:
绑定到目标方法时出错。
我是在正确的轨道上还是有更好的方法?
答案 0 :(得分:2)
我使用此代码取得了成功:
eventInfo.AddEventHandler(this, Delegate.CreateDelegate(typeof(eventInfo.EventHandlerType.FullName), this, "MyEventHandler"));
编辑: 补充:eventInfoEventHandlerType.FullName所以基于事件处理程序类型它会更加动态。