Делегаты в C # - PullRequest
       31

Делегаты в C #

0 голосов
/ 29 ноября 2010

Как добавить метод для делегирования с помощью отражения? Давайте рассмотрим, что у меня две сборки: одна AAA содержит определение делегатов, а другая BBB содержит метод, который нужно добавить к делегату. В BBB я добавил метод к делегату в AAA. Как выполнить этот сценарий?

1 Ответ

3 голосов
/ 29 ноября 2010

Примерно так (предупреждение - тестирование не выполняется):

// 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);

Если вы хотите добавить не событие, а просто еще одно Delegate, тогда вы используете Delegate.Combine:

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