public override void LoadCache() { _signature = Signature; _declaringType = DeclaringType; _name = Name; }
public override void ClearCache() { _signature = null; _declaringType = null; _name = null; }
public IMemberSignature ReadMemberRefSignature(uint sig, IGenericParametersProvider provider) { IMemberSignature signature = null; using (BinaryReader reader = GetBlobReader(sig)) { byte flag = reader.ReadByte(); if (flag == 0x6) { FieldSignature fieldsignature = new FieldSignature(); fieldsignature.ReturnType = ReadTypeReference(reader, (ElementType)reader.ReadByte(), null); signature = fieldsignature; } else { MethodSignature methodsignature = new MethodSignature(); if ((flag & 0x20) != 0) { methodsignature.HasThis = true; flag = (byte)(flag & -33); } if ((flag & 0x40) != 0) { methodsignature.ExplicitThis = true; flag = (byte)(flag & -65); } if ((flag & 0x10) != 0) { uint genericsig = ReadCompressedUInt32(reader); } methodsignature.CallingConvention = (MethodCallingConvention)flag; //if ((flag & 0x10) != 0x0) //{ // uint num2 = ReadCompressedUInt32(); // // List<GenericParameter> generics = new List<GenericParameter>(); // for (int i = 0; i < num2; i++) // { // } // //} uint num3 = ReadCompressedUInt32(reader); methodsignature.ReturnType = ReadTypeReference(reader, (ElementType)ReadCompressedUInt32(reader), provider);//ReadTypeSignature((uint)stream.Position); if (num3 != 0) { ParameterReference[] parameters = new ParameterReference[num3]; for (int i = 0; i < num3; i++) { parameters[i] = new ParameterReference() { ParameterType = ReadTypeReference(reader, (ElementType)ReadCompressedUInt32(reader), provider) }; } methodsignature.Parameters = parameters; } signature = methodsignature; } } return signature; }
public IMemberSignature ReadMemberRefSignature(uint sig, IGenericContext context) { IMemberSignature signature = null; BlobSignatureReader reader; if (TryGetBlobReader(sig, context, out reader)) { using (reader) { byte flag = reader.ReadByte(); if (flag == 0x6) { FieldSignature fieldsignature = new FieldSignature(); fieldsignature.ReturnType = reader.ReadTypeReference((ElementType)reader.ReadByte()); signature = fieldsignature; } else { MethodSignature methodsignature = new MethodSignature(); if ((flag & 0x20) != 0) { methodsignature.HasThis = true; flag = (byte)(flag & -33); } if ((flag & 0x40) != 0) { methodsignature.ExplicitThis = true; flag = (byte)(flag & -65); } if ((flag & 0x10) != 0) { int genericsig = NETGlobals.ReadCompressedInt32(reader); if (!context.IsDefinition) { AddMissingGenericParameters(context.Method, genericsig - 1); } } methodsignature.CallingConvention = (MethodCallingConvention)flag; uint paramCount = NETGlobals.ReadCompressedUInt32(reader); methodsignature.ReturnType = reader.ReadTypeReference(); ParameterReference[] parameters = new ParameterReference[paramCount]; for (int i = 0; i < paramCount; i++) { parameters[i] = new ParameterReference() { ParameterType = reader.ReadTypeReference((ElementType)reader.ReadByte()) }; } methodsignature.Parameters = parameters; signature = methodsignature; } } } return signature; }