在C#中,如何根据名称向对象添加事件处理程序?
我正在尝试根据一个或多个事件的名称将事件处理程序添加到“myObject”。 “myObject”有一个名为“MyEvent”的事件,我有一个名为“MyEventHandler”的公共事件处理程序(我不需要按名称获取它,但在下面进行操作即可获取MethodInfo) 这就是我到目前为止所做的:在C#中,如何根据名称向对象添加事件处理程序?,c#,.net,reflection,C#,.net,Reflection,我正在尝试根据一个或多个事件的名称将事件处理程序添加到“myObject”。 “myObject”有一个名为“MyEvent”的事件,我有一个名为“MyEventHandler”的公共事件处理程序(我不需要按名称获取它,但在下面进行操作即可获取MethodInfo) 这就是我到目前为止所做的: EventInfo eventInfo = myObject.GetType().GetEvent("MyEvent"); MethodInfo handlerInfo = GetType().GetMe
EventInfo eventInfo = myObject.GetType().GetEvent("MyEvent");
MethodInfo handlerInfo = GetType().GetMethod("MyEventHandler");
if (eventInfo != null && handlerInfo != null)
eventInfo.AddEventHandler(
this,
Delegate.CreateDelegate(eventInfo.EventHandlerType, handlerInfo)
);
我得到这个错误:
绑定到目标方法时出错
我走对了还是有更好的方法?我成功地使用了以下代码:
eventInfo.AddEventHandler(this, Delegate.CreateDelegate(typeof(eventInfo.EventHandlerType.FullName), this, "MyEventHandler"));
编辑:
添加了:eventInfoEventHandlerType.FullName,因此它基于事件处理程序类型更具动态性。几乎,我将您的答案与刚刚消失的另一个答案组合在一起(第一个参数使用“myObject”而不是这个)。谢谢你们两位。