私の 'myClass'クラスでは、Reflection.Emitを使用してmyClassクラスのメンバーの1つにイベントハンドラを動的に記述しています。動的イベントハンドラで 'this'を参照してください
私はこれを成功させました。
ここで、myClassクラスのインスタンスメソッドの1つを呼び出すように、イベントハンドラを変更します。
しかし、Reflection.Emitを使用してMSILスタックに 'this'への参照をプッシュする方法を理解できません。イベントハンドラ内では、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
}
}
ありがとう!
"Main"と言うとき、プログラムを起動する実際のクラスまたは 'static void main'メソッドを参照していますか? Jakersの答えに基づく混乱があるようです。 – jasonh
申し訳ございませんが、選択されていません。私は改訂します – emrosenf
静的メソッドからインスタンスメソッドを呼び出すインスタンスは存在しないので、インスタンスメソッドを呼び出すことはできません。 –