Exemple #1
0
        private static Signature LoadResolutionScope(Module module, int token)
        {
            int rid = MetadataToken.GetRID(token);

            if (rid == 0)
            {
                return(null);
            }

            switch (MetadataToken.GetType(token))
            {
            case MetadataTokenType.TypeRef:
                return(LoadTypeRef(module, rid));

            case MetadataTokenType.Assembly:                   // Current assembly.
            case MetadataTokenType.Module:                     // Current module.
                return(null);

            case MetadataTokenType.AssemblyRef:
                return(AssemblyReference.LoadRef(module, rid));

            case MetadataTokenType.ModuleRef:
                return(ModuleReference.LoadRef(module, rid));

            default:
                throw new AssemblyLoadException(string.Format(SR.AssemblyLoadError, module.Location));
            }
        }
Exemple #2
0
        protected void Load()
        {
            var image = _module.Image;

            ManifestResourceRow row;

            image.GetManifestResource(_rid, out row);

            _name       = image.GetString(row.Name);
            _visibility = (ResourceVisibilityFlags)row.Flags;
            _offset     = row.Offset;

            int implementationToken = MetadataToken.DecompressImplementation(row.Implementation);

            switch (MetadataToken.GetType(implementationToken))
            {
            case MetadataTokenType.AssemblyRef:
            {
                int rid = MetadataToken.GetRID(implementationToken);
                _owner = AssemblyReference.LoadRef(_module, rid);
            }
            break;

            case MetadataTokenType.File:
            {
                int rid = MetadataToken.GetRID(implementationToken);
                _owner = FileReference.Load(_module, rid);
            }
            break;

            default:
            {
                _opFlags = _opFlags.SetBitAtIndex(LoadDataFromImageFlag, true);
            }
            break;
            }
        }
Exemple #3
0
        private static Signature LoadExportedTypeImplementation(Module module, int token)
        {
            int rid = MetadataToken.GetRID(token);

            if (rid == 0)
            {
                return(null);
            }

            switch (MetadataToken.GetType(token))
            {
            case MetadataTokenType.File:
                return(ModuleReference.LoadFile(module, rid));

            case MetadataTokenType.AssemblyRef:
                return(AssemblyReference.LoadRef(module, rid));

            case MetadataTokenType.ExportedType:
                return(LoadExportedType(module, rid));

            default:
                throw new AssemblyLoadException(string.Format(SR.AssemblyLoadError, module.Location));
            }
        }