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#
0
A
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);
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 –
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