В моем классе 'myClass' я использую Reflection.Emit для динамической записи обработчика событий для одного из членов класса myClass.
Я сделал это успешно.
Теперь я хочу изменить обработчик событий для вызова одного из методов экземпляра в классе myClass.
Однако я не могу понять, как поместить ссылку на 'this' в стек MSIL с помощью Reflection.Emit. В обработчике событий Ldarg_0 - это не ссылка на this, а первый параметр обработчика событий.
Кто-нибудь знает, как поместить ссылку на 'this' в стек, чтобы я мог вызвать метод экземпляра. Например, я хотел бы, чтобы код c # выглядел так:
public class myClass
{
private myObj1 obj1;
public myClass() {
this.init();
}
private void init()
{
obj1.myEvent += new myEvent_EventHandler(theHandler);
}
private void theHandler(myObj2 obj2, myObj3 obj3)
{
// this is the part I'm having trouble with
this.myFunction(obj2);
}
private void myFunction(myObj2 obj2)
{
// irrelevant
}
}
Спасибо!