Example #1
0
        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);
        }
Example #2
0
        public void AddAssembly(Assembly assembly)
        {
            IAssembly2 assembly2 = (IAssembly2)assembly;

            lock (this.m_loadedAssembliesLock)
            {
                if (!this.m_loadedAssemblies.Contains(assembly))
                {
                    this.m_loadedAssemblies.Add(assembly);
                }
            }
        }
Example #3
0
        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);
        }