public static TypeDefinition Resolve (IAssemblyResolver resolver, TypeReference type) { type = type.GetElementType (); var scope = type.Scope; switch (scope.MetadataScopeType) { case MetadataScopeType.AssemblyNameReference: var assembly = resolver.Resolve ((AssemblyNameReference) scope); if (assembly == null) return null; return GetType (resolver, assembly.MainModule, type); case MetadataScopeType.ModuleDefinition: return GetType (resolver, (ModuleDefinition) scope, type); case MetadataScopeType.ModuleReference: var modules = type.Module.Assembly.Modules; var module_ref = (ModuleReference) scope; for (int i = 0; i < modules.Count; i++) { var netmodule = modules [i]; if (netmodule.Name == module_ref.Name) return GetType (resolver, netmodule, type); } break; } throw new NotSupportedException (); }
public static TypeDefinition Resolve(IAssemblyResolver resolver, TypeReference type) { type = type.GetElementType(); var scope = type.Scope; switch (scope.MetadataScopeType) { case MetadataScopeType.AssemblyNameReference: var assembly = resolver.Resolve((AssemblyNameReference)scope); if (assembly == null) { return(null); } return(GetType(resolver, assembly.MainModule, type)); case MetadataScopeType.ModuleDefinition: return(GetType(resolver, (ModuleDefinition)scope, type)); case MetadataScopeType.ModuleReference: var modules = type.Module.Assembly.Modules; var module_ref = (ModuleReference)scope; for (int i = 0; i < modules.Count; i++) { var netmodule = modules [i]; if (netmodule.Name == module_ref.Name) { return(GetType(resolver, netmodule, type)); } } break; } throw new NotSupportedException(); }
static void AppendType(TypeReference type, StringBuilder name, bool fq_name, bool top_level) { var declaring_type = type.DeclaringType; if (declaring_type != null) { AppendType(declaring_type, name, false, top_level); name.Append('+'); } var @namespace = type.Namespace; if (!string.IsNullOrEmpty(@namespace)) { name.Append(@namespace); name.Append('.'); } name.Append(type.GetElementType().Name); if (!fq_name) { return; } if (type.IsTypeSpecification()) { AppendTypeSpecification((TypeSpecification)type, name); } if (RequiresFullyQualifiedName(type, top_level)) { name.Append(", "); name.Append(GetScopeFullName(type)); } }
public override TypeReference GetElementType() { return(element_type.GetElementType()); }