2010-11-29 5 views
0

Comment ajouter une méthode à déléguer Utilisation de la réflexion? Considérons que j'ai deux assemblées, une AAA contient la définition des délégués et une autre BBB contient la méthode à ajouter au délégué. Dans BBB, j'ai ajouté la méthode au délégué dans AAA. Comment réaliser ce scénario?Délégués en C#

+2

Qu'est-ce que voulez-vous dire avec "ajouter la méthode au délégué"? Pouvez-vous peut-être montrer un petit échantillon de code de ce que vous essayez d'atteindre (pseudo-code est bien, juste pour communiquer l'idée). Aussi, vérifiez si cela couvre vos besoins: http://stackoverflow.com/questions/3024253/create-delegate-via-reflection –

+0

En fait, j'avais l'événement et la déclaration de délégué en BBB, et une méthode de gestionnaire en AAA. J'ai réussi Abonné une méthode à un événement dans AAA. Maintenant, je dois mettre en œuvre l'événement sans utiliser, c'est-à-dire avoir à ajouter une méthode de AAA à un délégué de BBB dans le segment de codage AAA – user518333

Répondre

3

Quelque chose comme ça (avertissement - ne compilera pas testé):

// get the methodinfo for the method you want to add 
MethodInfo methodToAdd = typeof(AAA).GetMethod("MyMethod"); 

// create a delegate instance for it 
Delegate methodDelegate = Delegate.CreateDelegate(typeof(BBB.MyDelegate), methodToAdd); 

// get the event you want to add to 
EventInfo eventToAddMethodTo = typeof(BBB).GetEvent("MyEvent"); 

// call the event's add method, with the delegate you want to add 
eventToAddMethodTo.AddEventHandler(null /*or the AAA instance if this is a non-static event */, methodDelegate); 

Si ce n'est pas un événement que vous voulez ajouter, mais juste un autre Delegate, vous utilisez Delegate.Combine:

Delegate combinedDelegate = Delegate.Combine(oldDelegate, methodDelegate);