public virtual Assembly ResolveAssembly(AssemblyName name) { Assembly target = this.TryResolveAssembly(name); if (target != null) { return(target); } if (this.OnResolveEvent != null) { ResolveAssemblyNameEventArgs resolveAssemblyNameEventArg = new ResolveAssemblyNameEventArgs(name); this.OnResolveEvent(this, resolveAssemblyNameEventArg); target = resolveAssemblyNameEventArg.Target; } if (target == null) { CultureInfo invariantCulture = CultureInfo.InvariantCulture; string universeCannotResolveAssembly = MetadataStringTable.UniverseCannotResolveAssembly; object[] objArray = new object[] { name }; throw new UnresolvedAssemblyException(string.Format(invariantCulture, universeCannotResolveAssembly, objArray)); } IAssembly2 assembly2 = target as IAssembly2; if (assembly2 == null) { throw new InvalidOperationException(MetadataStringTable.ResolverMustResolveToValidAssembly); } if (assembly2.TypeUniverse != this) { throw new InvalidOperationException(MetadataStringTable.ResolvedAssemblyMustBeWithinSameUniverse); } return(target); }
public void AddAssembly(Assembly assembly) { IAssembly2 assembly2 = (IAssembly2)assembly; lock (this.m_loadedAssembliesLock) { if (!this.m_loadedAssemblies.Contains(assembly)) { this.m_loadedAssemblies.Add(assembly); } } }
public static ITypeUniverse Universe(Type type) { ITypeProxy typeProxy = type as ITypeProxy; if (typeProxy != null) { return(typeProxy.TypeUniverse); } IAssembly2 assembly = type.Assembly as IAssembly2; if (assembly == null) { return(null); } return(assembly.TypeUniverse); }