我刚刚开始学习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()
答案 0 :(得分:2)