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)); } }
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; } }
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)); } }