private GenericParameter GetGenericParameter(GenericParameterType type, uint var) { IGenericParameterProvider method; IGenericContext genericContext = this.reader.context; int num = (int)var; if (genericContext == null) { return(this.GetUnboundGenericParameter(type, num)); } if (type == GenericParameterType.Type) { method = genericContext.Type; } else { if (type != GenericParameterType.Method) { throw new NotSupportedException(); } method = genericContext.Method; } if (!genericContext.IsDefinition) { SignatureReader.CheckGenericContext(method, num); } if (num >= method.GenericParameters.Count) { return(this.GetUnboundGenericParameter(type, num)); } return(method.GenericParameters[num]); }
public void ReadMethodSignature(IMethodSignature method) { Collection <ParameterDefinition> parameters; byte num = base.ReadByte(); if ((num & 32) != 0) { method.HasThis = true; num = (byte)(num & -33); } if ((num & 64) != 0) { method.ExplicitThis = true; num = (byte)(num & -65); } method.CallingConvention = (MethodCallingConvention)num; MethodReference methodReference = method as MethodReference; if (methodReference != null && !methodReference.DeclaringType.IsArray) { this.reader.context = methodReference; } if ((num & 16) != 0) { uint num1 = base.ReadCompressedUInt32(); if (methodReference != null && !methodReference.IsDefinition) { SignatureReader.CheckGenericContext(methodReference, (int)(num1 - 1)); } } uint num2 = base.ReadCompressedUInt32(); method.MethodReturnType.ReturnType = this.ReadTypeSignature(); if (num2 == 0) { return; } MethodReference methodReference1 = method as MethodReference; if (methodReference1 == null) { parameters = method.Parameters; } else { ParameterDefinitionCollection parameterDefinitionCollection = new ParameterDefinitionCollection(method, (int)num2); ParameterDefinitionCollection parameterDefinitionCollection1 = parameterDefinitionCollection; methodReference1.parameters = parameterDefinitionCollection; parameters = parameterDefinitionCollection1; } for (int i = 0; (long)i < (ulong)num2; i++) { parameters.Add(new ParameterDefinition(this.ReadTypeSignature())); } }
public void ReadGenericInstanceSignature(IGenericParameterProvider provider, IGenericInstance instance) { uint num = base.ReadCompressedUInt32(); if (!provider.IsDefinition) { SignatureReader.CheckGenericContext(provider, (int)(num - 1)); } Collection <TypeReference> genericArguments = instance.GenericArguments; for (int i = 0; (long)i < (ulong)num; i++) { genericArguments.Add(this.ReadTypeSignature()); } }