我有一個非常簡單的類:訂閱事件與反思
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