private void Load() { var image = _module.Image; int[] implementations; image.GetMethodImplsByBody(_method.RID, out implementations); int count = implementations.Length; _list.Capacity = count; for (int i = 0; i < count; i++) { _list.Add(MethodSignature.Load(_module, MetadataToken.DecompressMethodDefOrRef(implementations[i]))); } }
internal static GenericMethodReference LoadMethodSpec(Module module, int rid) { var image = module.Image; var genericMethodRef = image.MethodSpecSignatures[rid - 1] as GenericMethodReference; if (genericMethodRef != null) { return(genericMethodRef); } MethodSpecRow row; image.GetMethodSpec(rid, out row); genericMethodRef = new GenericMethodReference(); genericMethodRef._declaringMethod = MethodReference.LoadMethodDefOrRef(module, MetadataToken.DecompressMethodDefOrRef(row.Method)); using (var accessor = image.OpenBlob(row.Instantiation)) { byte sigType = accessor.ReadByte(); // Should be equal to SignatureType.GenericInst if (sigType != Metadata.SignatureType.GenericInst) { throw new CodeModelException(string.Format(SR.AssemblyLoadError, module.Location)); } var genericArguments = TypeSignature.LoadGenericArguments(accessor, module); genericMethodRef._genericArguments = ReadOnlyList <TypeSignature> .Create(genericArguments); } module.AddSignature(ref genericMethodRef); image.MethodSpecSignatures[rid - 1] = genericMethodRef; return(genericMethodRef); }