我正在尝试根据一个或多个事件的名称将事件处理程序添加到“ 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,因此根据事件处理程序的类型它更具动态性。

关于c# - 在C#中,如何根据名称向对象添加事件处理程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/854476/

10-12 02:27