Emit 名前空間の学習を始めたばかりです。以下は有効ですか? これにより例外がスローされます。
public class EmitTest
{
public void Test()
{
DynamicMethod dynMeth = new DynamicMethod("Foo", null, null, typeof(EmitTest));
ILGenerator gen = dynMeth.GetILGenerator();
gen.EmitWriteLine("Foo");
gen.Emit(OpCodes.Ret);
dynMeth.Invoke(null, null);
dynamic d = this;
d.Foo();
}
}
これを意図したとおりに機能させる方法はありますか、それとも DLR の制限ですか? ここでは、新しい void メソッド Foo() を作成し、それを EmitTest クラスのメンバーとして作成しました。ランタイムは、EmitTest で Foo() が見つからないと言います