1
是否有可能使用Reflection是C#來觸發一個事件?說我有這樣的情況:C#創建一個觸發事件的委託?
public delegate void SomeEventHandler(object sender, BenArgs e);
class EventHub
{
public event SomeEventHandler SOME_EVENT;
public void fireEvent(String eventName)
{
SomeEventHandler evt = (SomeEventHandler) Delegate.CreateDelegate(typeof(SomeEventHandler), this, eventName);
evt.Invoke(null, null);
}
}
這意味着如果我叫
EventHub.fireEvent("SOME_EVENT")
那麼它使事件樞紐火SOME_EVENT?我已經試過這個,只是得到例外。
這主要是我的好奇心,我知道在這種情況下,我可以輕鬆地在沒有反射的情況下觸發事件。
哈!有用!非常感謝。任何原因,我想使用動態調用只是調用? – Ben 2010-10-29 03:57:12
// @本:乾杯。 'System.Delegate'不聲明'Invoke'方法。 – Ani 2010-10-29 04:03:11
令人驚歎!剛纔我嘗試用'BindingFlags.Instance'只是因爲我認爲這個事件是'public'。但是我得到了'FieldInfo [0]'。爲什麼? – 2010-10-29 04:03:59