В C # как добавить обработчики событий к объекту на основе имен? - PullRequest
2 голосов
/ 12 мая 2009

Я пытаюсь добавить обработчики событий в 'myObject' на основе имени события или событий. У myObject есть событие MyEvent, и у меня есть открытый обработчик событий MyEventHandler (который мне не нужно получать по имени, но я делаю это ниже, чтобы получить MethodInfo).

Это то, что я имею до сих пор:

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

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

Я получаю эту ошибку:

Ошибка привязки к целевому методу.

Я на правильном пути или есть лучший способ?

1 Ответ

2 голосов
/ 12 мая 2009

У меня был успех с этим кодом:

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

Edit: Добавлено: eventInfoEventHandlerType.FullName, поэтому оно немного более динамично в зависимости от типа обработчика событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...