internal IList <MethodOverride> GetMethodOverrides(CorMethodDef cmd) { var gpContext = new GenericParamContext(this, cmd); var dict = methodRidToOverrides; if (dict == null) { dict = InitializeMethodOverrides(); } if (dict.TryGetValue(cmd.OriginalToken.Rid, out var overrides)) { var newList = new List <MethodOverride>(overrides.Count); for (int i = 0; i < overrides.Count; i++) { var ovr = overrides[i]; var newMethodBody = readerModule.ResolveToken(ovr.MethodBodyToken, gpContext) as IMethodDefOrRef; var newMethodDeclaration = readerModule.ResolveToken(ovr.MethodDeclarationToken, gpContext) as IMethodDefOrRef; Debug.Assert(newMethodBody != null && newMethodDeclaration != null); if (newMethodBody == null || newMethodDeclaration == null) { continue; } newList.Add(new MethodOverride(newMethodBody, newMethodDeclaration)); } return(newList); } return(new List <MethodOverride>()); }
protected override ImplMap GetImplMap_NoLock() { var mdi = readerModule.MetaDataImport; uint token = OriginalToken.Raw; var name = MDAPI.GetPinvokeMapName(mdi, token); if (name == null) { return(null); } PInvokeAttributes attrs; uint moduleToken; if (!MDAPI.GetPinvokeMapProps(mdi, token, out attrs, out moduleToken)) { return(null); } var mr = readerModule.ResolveToken(moduleToken) as ModuleRef; if (mr == null) { return(null); } return(readerModule.UpdateRowId(new ImplMapUser(mr, name, attrs))); }
void InitClass_NoLock() { var mdi = readerModule.MetaDataImport; uint token = OriginalToken.Raw; uint clsToken = MDAPI.GetMemberRefClassToken(mdi, token); this.Class = readerModule.ResolveToken(clsToken, gpContext) as IMemberRefParent; }
void InitNameAndAttrs_NoLock() { var mdai = readerModule.MetaDataAssemblyImport; uint token = OriginalToken.Raw; Name = MDAPI.GetManifestResourceName(mdai, token) ?? string.Empty; MDAPI.GetManifestResourceProps(mdai, token, out offset, out uint implementation, out var attrs); attributes = (int)attrs; this.implementation = readerModule.ResolveToken(implementation) as IImplementation; }
void Initialize_NoLock() { var mdi2 = readerModule.MetaDataImport2; uint token = OriginalToken.Raw; var instData = MDAPI.GetMethodSpecProps(mdi2, token, out uint method); this.method = readerModule.ResolveToken(method, gpContext) as IMethodDefOrRef; instantiation = readerModule.ReadSignature(instData, gpContext); }
protected override IImplementation?GetImplementation_NoLock() => readerModule.ResolveToken(implementation) as IImplementation;
protected override IImplementation GetImplementation_NoLock() { return(readerModule.ResolveToken(implementation) as IImplementation); }