Delegate from EventInfo
От: Рек Россия  
Дата: 21.07.02 14:37
Оценка:
Имеется EventInfo. Как из него получить Delegate?

Можно воспользоваться EventInfo.EventHandlerType, но
Тогда непонятно как из Type получить Delegate.

Даже непонятно, как установить то что Type соделжит
инфо по делегату: нету метода IsDelegate.

Куда копать?
Re: Delegate from EventInfo
От: MaxMP Россия  
Дата: 21.07.02 17:44
Оценка:
Так EventHandlerType и содержит Delegate, вернее typeof(DelegateUsedForYouEvent).
Re[2]: Delegate from EventInfo
От: Рек Россия  
Дата: 21.07.02 18:01
Оценка:
Здравствуйте MaxMP, Вы писали:

MMP>Так EventHandlerType и содержит Delegate, вернее typeof(DelegateUsedForYouEvent).


Не понял.
Напиши по подробнее pls.
Re[3]: Delegate from EventInfo
От: Рек Россия  
Дата: 21.07.02 21:01
Оценка: 12 (1)
Здравствуйте Рек, Вы писали:

Рек>Здравствуйте MaxMP, Вы писали:


MMP>>Так EventHandlerType и содержит Delegate, вернее typeof(DelegateUsedForYouEvent).


Всё прекрасно. Разобрался.
Мне нужен был не тип делегата, а сам делегат...
Через Delegate я собирался получить параметры события, т.к у него есть Method... а больше я не видел где их получить.

Так вот.
Исследование показало, что...

то что видно снаружи как тип-делегат (то что возвращает EventInfo.EventHandlerType),
на самом деле является просто типом-классом (Type.IsClass == true)

классом спец. вида:


class EventHandler sealed ansi 
  extends System.MulticastDelegate
  implements System.ICloneable,
    System.Runtime.Serialization.ISerializable
{
  EventHandler(Object object, IntPtr method);
  virtual Void EndInvoke(IAsyncResult result);
  virtual IAsyncResult BeginInvoke(Object sender, EventArgs e, AsyncCallback callback, Object object);
  virtual Void Invoke(Object sender, EventArgs e);
}


А параметры события это параметры метода Invoke этого спец класса.


EventInfo ei=...
MethodInfo mi    = ei.EventHandlerType.GetMethod("Invoke");
ParameterInfo[] arrPi in mi.GetParameters();


Заполнив эти параметры можно передать их в Delegate.DynamicInvoke чтобы возбудить событие.

Что мне было и нужно...
Re[4]: Delegate from EventInfo
От: Igor Soukhov  
Дата: 22.07.02 14:35
Оценка:
Здравствуйте Рек, Вы писали:

Рек>Всё прекрасно. Разобрался.

да на RSDN ни один вопрос не остается без ответа =)

ps: засетапил все — вот это жисть
http://rsdn.org/File/76/Logo.gif * thriving in a production environment *
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.