我有這樣一段代碼不起作用:的addEventHandler使用反射
public CartaoCidadao()
{
InitializeComponent();
object o = WebDAV.Classes.SCWatcher.LoadAssembly();
MethodInfo method =
this.GetType().GetMethod("Inserted",
BindingFlags.NonPublic | BindingFlags.Instance);
EventInfo eventInfo = o.GetType().GetEvent("CardInserted");
Type type = eventInfo.EventHandlerType;
Delegate handler = Delegate.CreateDelegate(type, this , method);
eventInfo.AddEventHandler(o, handler);
}
void Inserted(string readerName, string cardName)
{
System.Windows.Forms.MessageBox.Show(readerName);
}
事件CardInserted存在於另一個DLL文件和對象「o」的載荷確定。委託處理程序的值有效。我只能解僱這個事件。
我唯一關心的問題是`Func <>`委託不太適合事件。如果您有多個事件訂閱,則只有其中一個實際會產生返回值,這可能會導致應用程序的非確定性行爲。 – 2015-11-12 07:41:03