Exemplo n.º 1
0
        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>());
        }
Exemplo n.º 2
0
        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)));
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
 protected override IImplementation?GetImplementation_NoLock() => readerModule.ResolveToken(implementation) as IImplementation;
Exemplo n.º 7
0
 protected override IImplementation GetImplementation_NoLock()
 {
     return(readerModule.ResolveToken(implementation) as IImplementation);
 }