我有一个非常简单的类:订阅事件与反思
class Trace
{
void WriteTrace()
{
Console.WriteLine("Trace !");
}
}
我想这个类订阅事件,例如表单控件的加载事件。控制和事件是动态定义,所以我想使用反射来做到这一点,我想这样的事情:
在我的课堂跟踪我有这样的方法:
public void SubscribeEvent (Control control)
{
if (type.IsAssignableFrom(control.GetType()))
{
Trace test = this;
MethodInfo method = typeof(Trace).GetMethod("WriteTrace");
// Subscribe to the event
EventInfo eventInfo = control.GetType().GetEvent("Load"); // We suppose control is a form
Delegate handler = Delegate.CreateDelegate(eventInfo.EventHandlerType, control, method); // ERROR : Error binding to target method
}
}
}
有一个错误的最后一行:错误绑定到目标方法。我的代码段出了什么问题?
谢谢!
编辑:好吧,没有更多的错误,但当从窗体中引发事件“Load”时,方法WriteTrace不会被调用(我已经放置了一个断点但没有到达)。为什么?
对不起,编辑,它的工作原理很细:)
为什么你想要使用反射,如果你只能订阅/添加处理程序的事件? 'control.Load + = HandlerHere;'...另一方面,你是否曾经用'Form'代替Control?因为你首先在谈论一个表单。 – Bobby 2010-11-05 09:53:22
这只是一个例子,但我应该能够选择控制和事件追踪。 – Florian 2010-11-05 10:27:14