在C#中,如何基于名称向对象添加事件处理程序? [英] In C#, how do I add event handlers to an object based on names?

查看:52
本文介绍了在C#中,如何基于名称向对象添加事件处理程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试根据一个或多个事件的 name 将事件处理程序添加到"myObject"."myObject"有一个名为"MyEvent"的事件,我有一个名为"MyEventHandler"的公共事件处理程序(我不需要按名称获取,但在下面进行操作即可获取MethodInfo).

I'm am trying to add event handlers to 'myObject' based on the name of an event or events. 'myObject' has an event called 'MyEvent' and I have a public event handler called 'MyEventHandler' (which I don't need to get by name but do it below to get a MethodInfo).

这是我到目前为止所拥有的:

This is what I have so far:

EventInfo eventInfo = myObject.GetType().GetEvent("MyEvent");
MethodInfo handlerInfo = GetType().GetMethod("MyEventHandler");

if (eventInfo != null && handlerInfo != null)
   eventInfo.AddEventHandler(
      this,
      Delegate.CreateDelegate(eventInfo.EventHandlerType, handlerInfo)
   );

我收到此错误:

错误绑定到目标方法.

Error binding to target method.

我在正确的轨道上还是有更好的方法?

Am I on the right track or is there a better way?

推荐答案

我成功使用了以下代码:

I had success with this code:

eventInfo.AddEventHandler(this, Delegate.CreateDelegate(typeof(eventInfo.EventHandlerType.FullName), this, "MyEventHandler"));

添加了:eventInfoEventHandlerType.FullName,因此根据事件处理程序的类型它更具动态性.

Added: eventInfoEventHandlerType.FullName so it's a little more dynamic based on the event handler type.

这篇关于在C#中,如何基于名称向对象添加事件处理程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆