public static MethodSig Read(BinaryStreamReader signatureBlobReader) { var callingConvention = (CallingConventions)signatureBlobReader.ReadByte(); MethodSig result; switch (callingConvention & ~CallingConventions.HasThis & ~CallingConventions.ExplicitThis) { case CallingConventions.Default: result = new Default(); break; case CallingConventions.C: result = new C(); break; case CallingConventions.StdCall: result = new StdCall(); break; case CallingConventions.FastCall: result = new FastCall(); break; case CallingConventions.VarArg: result = new VarArg(); break; case CallingConventions.Generic: { var typed = new Generic(); typed.ReadDetails(signatureBlobReader); result = typed; } break; default: throw new BadImageFormatException("Invalid calling convention byte " + callingConvention + "."); } result.ReadParameters(signatureBlobReader); return(result); }
public static MethodSig Read(BinaryStreamReader signatureBlobReader) { var callingConvention = (CallingConventions)signatureBlobReader.ReadByte(); MethodSig result; switch (callingConvention & ~CallingConventions.HasThis & ~CallingConventions.ExplicitThis) { case CallingConventions.Default: result = new Default(); break; case CallingConventions.C: result = new C(); break; case CallingConventions.StdCall: result = new StdCall(); break; case CallingConventions.FastCall: result = new FastCall(); break; case CallingConventions.VarArg: result = new VarArg(); break; case CallingConventions.Generic: { var typed = new Generic(); typed.ReadDetails(signatureBlobReader); result = typed; } break; default: throw new BadImageFormatException("Invalid calling convention byte "+callingConvention+"."); } result.ReadParameters(signatureBlobReader); return result; }