コード例 #1
0
        /// <summary>
        /// Parses the signature.
        /// </summary>
        /// <param name="reader">The reader.</param>
        protected override sealed void ParseSignature(SignatureReader reader)
        {
            byte value = reader.ReadByte();

            // Check for instance signature
            if (HAS_THIS == (value & HAS_THIS))
            {
                hasThis = true;
            }

            if (HAS_EXPLICIT_THIS == (value & HAS_EXPLICIT_THIS))
            {
                hasExplicitThis = true;
            }

            if (GENERIC == (value & GENERIC))
            {
                methodCallingConvention = MethodCallingConvention.Generic;
                genericParameterCount = reader.ReadCompressedInt32();
            }
            else if (VARARG == (value & VARARG))
            {
                methodCallingConvention = MethodCallingConvention.VarArg;
            }
            else if ((value & 0x1F) != 0x00)
            {
                throw new InvalidOperationException(@"Invalid method definition signature.");
            }

            // Number of parameters
            int paramCount = reader.ReadCompressedInt32();
            parameters = new SigType[paramCount];

            // Read the return type
            returnType = SigType.ParseTypeSignature(reader);

            // Read all parameters
            for (int i = 0; i < paramCount; i++)
                parameters[i] = SigType.ParseTypeSignature(reader);
        }
コード例 #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MethodSignature"/> class.
 /// </summary>
 /// <param name="reader">The reader.</param>
 public MethodSignature(SignatureReader reader)
     : base(reader)
 {
 }
コード例 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MethodSignature"/> class.
 /// </summary>
 /// <param name="reader">The reader.</param>
 /// <param name="genericArguments">The generic arguments.</param>
 public MethodSignature(SignatureReader reader, SigType[] genericArguments)
     : base(reader)
 {
     ApplyGenericArguments(genericArguments);
 }