OpCode构造函数在哪里?

时间:2014-02-09 17:28:00

标签: c# reflection opcode

当我看着OpCodes类源代码时,我发现了一些奇怪的东西。

OpCodes类包含一些类型为OpCode struct的静态只读字段。例如:

public static readonly OpCode Nop = new OpCode(OpCodeValues.Nop, 6556325);

创建一个新的OpCode并传递两个参数。但是当我查看OpCode结构时,我找不到任何带有两个参数的构造函数。相反,只有一个internal构造函数,它看起来像这样:

    internal OpCode(String stringname, 
                    StackBehaviour pop, 
                    StackBehaviour push, 
                    OperandType operand, 
                    OpCodeType type, 
                    int size, byte s1, byte s2, 
                    FlowControl ctrl, 
                    bool endsjmpblk, int stack) 

据我所知,这里没有可选参数

那么构造函数在哪里?在某处有隐形构造函数吗?

注意:我正在使用.NET Reflector

2 个答案:

答案 0 :(得分:4)

显然你正在看mscorlib的2.0版本。该版本具有带有11参数构造函数的OpCode结构。较新版本的mscorlib(至少4.0版本)包含仅包含2个参数的OpCode构造函数

答案 1 :(得分:3)

我认为你在寻找错误的地方。

enter image description here

mscorlib.System.Reflection.Emit.OpCode中找到(使用ILSpy)