reflection.emitで関数を呼び出す前にスタックにロードする必要のあることを誰かに説明することはできますか?リフレクションスタックとメソッドコールを発行
私は非常に単純な方法
public static void Execute(string 1, string 2)
を持っている私は、動的に以下のクラスにメソッドを生成する(残りの部分を忘れて、私は彼らが整理だ)
public class Test{
public string s1;
public void Run(string s2)
{
MyOtherClass.Execute(s2,s1)
}
}
私はコピーを持っています参照のために、上記のテストの "私は、次のオペコードが"呼び出し "の前に、放出されたことに気づいた。
- ldarg_1
- ldarg_0
- ldfld
質問がldarg_0が何をやっているのですか?私は呼び出しに2つの引数しか必要としません、なぜCLRはldarg_0をスタックにプッシュする必要がありますか?
周囲のILを提供できますか? –