2009-05-12 3 views
2

Ich bin dabei, Event-Handler zu 'myObject' basierend auf dem Namen eines Ereignisses oder Ereignisse hinzuzufügen. 'myObject' hat ein Ereignis namens 'MyEvent' und ich habe eine öffentliche Event-Handler namens 'MyEventHandler' (die ich nicht mit Namen bekommen muss, aber tun Sie es unten, um eine MethodInfo zu bekommen).Wie füge ich in C# Ereignishandler zu einem Objekt basierend auf Namen hinzu?

Dies ist, was ich bisher:

EventInfo eventInfo = myObject.GetType().GetEvent("MyEvent"); 
MethodInfo handlerInfo = GetType().GetMethod("MyEventHandler"); 

if (eventInfo != null && handlerInfo != null) 
    eventInfo.AddEventHandler(
     this, 
     Delegate.CreateDelegate(eventInfo.EventHandlerType, handlerInfo) 
    ); 

ich diesen Fehler:

Error binding to target method.

Bin ich auf dem richtigen Weg oder gibt es einen besseren Weg?

Antwort

2

Ich hatte Erfolg mit diesem Code:

eventInfo.AddEventHandler(this, Delegate.CreateDelegate(typeof(eventInfo.EventHandlerType.FullName), this, "MyEventHandler")); 

Edit: Hinzugefügt: eventInfoEventHandlerType.FullName so ist es ein wenig mehr Dynamik basiert auf der Event-Handler-Typ.

+1

Fast, kombinierte ich Ihre Antwort mit der anderen Antwort, die gerade verschwunden ist (mit 'myObject' anstelle von diesem für den ersten Parameter). Danke euch beiden. – tpower

Verwandte Themen