【问题标题】:Where is the OpCode constructor?OpCode 构造函数在哪里?
【发布时间】:2014-02-09 17:27:59
【问题描述】:

当我查看 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

【问题讨论】:

    标签: c# reflection opcode


    【解决方案1】:

    显然您正在查看 2.0 版本的 mscorlib。该版本有一个带有 11 个参数构造函数的 OpCode 结构。较新版本的 mscorlib,至少 4.0,包含一个 OpCode 构造函数,其中仅包含 2 个参数

    【讨论】:

      【解决方案2】:

      我认为你找错地方了。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-04
        相关资源
        最近更新 更多