/// <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); }
/// <summary> /// Initializes a new instance of the <see cref="MethodSignature"/> class. /// </summary> /// <param name="reader">The reader.</param> public MethodSignature(SignatureReader reader) : base(reader) { }
/// <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); }