Re[3]: Делегаты в MSIL
От: Пельмешко Россия blog
Дата: 20.02.09 15:50
Оценка: +1
Здравствуйте, AndrewStrelkov, Вы писали:

AS>Все правильно, в делегат передается указатель на функцию по сигнатуре. Вызов с параметром конструктора Type.EmtyTypes создает делегат без указателя, и это правильно вызывает исключение NullReferenceException. Но такое же исключение возникает при вызове с параметрами (new Type[]{ typeof(IntPtr)}).


Вызывать всё же надо с двумя параметрами, согласно сигнатуре конструктора...
gen.Emit(OpCodes.Newobj, typeof( EventHandler ).GetConstructor( new[] { typeof( object ), typeof( IntPtr ) } ));

Перед этим загрузив в стек null если передаваемый делегату метод является статическим, или ссылку на инстанс, если передаётся метод экземпляра, а потом уже загрузив в стек указатель на сам метод...
У меня создалось
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.