如何加载静态字段

本文关键字:静态 字段 加载 何加载 | 更新日期: 2023-09-27 18:34:25

我正在通过Reflection.Emit生成一个带有静态字段num1,num2等的类型。

现在我不知道如何发出将生成类型中的静态字段的内容加载到静态方法的评估堆栈的代码。到目前为止,我尝试的是:

generator.Emit(Opcodes.Ldarg, 0);
generator.Emit(Opcodes.Ldfld, "num1");

但显然这是行不通的,因为它尝试在"this"上加载一个实例字段,该字段未提供给静态方法。

我应该使用哪个操作码来访问静态字段?

如何加载静态字段

Opcodes.Ldsfld

因此,假设您之前在类似 FieldBuilder num1 = ... 的地方创建了 num1,您可以通过 generator.Emit(Opcodes.ldsfld, num1); 将其加载到堆栈中