在C#中,如何基于名称向对象添加事件处理程序? [英] In C#, how do I add event handlers to an object based on names?
问题描述
我正在尝试根据一个或多个事件的 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屋!