2012-05-17 98 views
2

我生成静态字段NUM1,NUM2等通过Reflection.Emit的一个类型。如何加载静态字段?

现在我不知道如何发出它加载在生成的类型的静态字段的内容到一个静态方法的评估栈代码。 我已经试过到目前为止:

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

但显然这不能工作,因为它会尝试加载在“本”,这是不提供给静态方法的实例字段。

哪些操作码,我应该用它来访问静态字段?

回答

12

Opcodes.Ldsfld

因此,假设你已经创建NUM1像FieldBuilder num1 = ...地方之前,你可以通过generator.Emit(Opcodes.ldsfld, num1);

+1

加载它压入堆栈,如果我没有字段信息的实例,但是我的名字,我可以做它? (我用另一种方法创建了Field)。 – user35443

+0

那么,这将是非常棘手。你至少应该沿着TypeBuilder通过,这样你就可以从那里抢字段信息。 –

+0

好的。谢谢 。 – user35443