Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中,如何根据名称向对象添加事件处理程序?_C#_.net_Reflection - Fatal编程技术网

在C#中,如何根据名称向对象添加事件处理程序?

在C#中,如何根据名称向对象添加事件处理程序?,c#,.net,reflection,C#,.net,Reflection,我正在尝试根据一个或多个事件的名称将事件处理程序添加到“myObject”。 “myObject”有一个名为“MyEvent”的事件,我有一个名为“MyEventHandler”的公共事件处理程序(我不需要按名称获取它,但在下面进行操作即可获取MethodInfo) 这就是我到目前为止所做的: EventInfo eventInfo = myObject.GetType().GetEvent("MyEvent"); MethodInfo handlerInfo = GetType().GetMe

我正在尝试根据一个或多个事件的名称将事件处理程序添加到“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)
   );
我得到这个错误:

绑定到目标方法时出错


我走对了还是有更好的方法?

我成功地使用了以下代码:

eventInfo.AddEventHandler(this, Delegate.CreateDelegate(typeof(eventInfo.EventHandlerType.FullName), this, "MyEventHandler"));
编辑:
添加了:eventInfoEventHandlerType.FullName,因此它基于事件处理程序类型更具动态性。

几乎,我将您的答案与刚刚消失的另一个答案组合在一起(第一个参数使用“myObject”而不是这个)。谢谢你们两位。