我通过Reflection.Emit生成一个带静态字段num1,num2等的Type。
现在我不知道如何发出代码,将生成的类型中的静态字段的内容加载到静态方法的评估堆栈中。 到目前为止我尝试的是:
generator.Emit(Opcodes.Ldarg, 0);
generator.Emit(Opcodes.Ldfld, "num1");
但显然这不起作用,因为它试图在'this'上加载一个实例字段,而不提供给静态方法。
我应该使用哪种操作码来访问静态字段?
答案 0 :(得分:12)
因此,假设您之前在FieldBuilder num1 = ...
之类的地方创建了num1,可以通过generator.Emit(Opcodes.ldsfld, num1);