Ich habe dieses Stück Code, das nicht funktioniert:addEventHandler mit Reflexion
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);
}
Event CardInserted in einer anderen DLL-Datei und Objekt vorhanden ist "o" Lasten OK. Der Delegate-Handler hat einen Wert nach dem anderen. Ich kann das Ereignis nur nicht auslösen.
Meine einzige Sorge mit dem Code ist, dass ein 'Func <>' Delegat nicht ganz gut für Ereignisse geeignet ist. Wenn Sie mehrere Abonnements für das Ereignis haben, wird nur einer von ihnen tatsächlich den Rückgabewert erzeugen, was zu einem nicht-deterministischen Verhalten der Anwendung führen kann. –