'myClass'クラスでは、Reflection.Emitを使用して、myClassクラス'メンバーの1つのイベントハンドラーを動的に記述しています。
私はこれを成功させました。
ここで、myClassクラスのインスタンスメソッドの1つを呼び出すようにイベントハンドラーを変更します。
ただし、Reflection.Emitを使用して「this」への参照をMSILスタックにプッシュする方法を理解できません。イベントハンドラー内では、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
}
}
ありがとう!