internal Type GetType(Universe universe, Module context, bool throwOnError, string originalName, bool resolve, bool ignoreCase) { Debug.Assert(!resolve || !ignoreCase); TypeName name = TypeName.Split(this.name); Type type; if (assemblyName != null) { Assembly asm = universe.Load(assemblyName, context, throwOnError); if (asm == null) { return(null); } if (resolve) { type = asm.ResolveType(context, name); } else if (ignoreCase) { type = asm.FindTypeIgnoreCase(name.ToLowerInvariant()); } else { type = asm.FindType(name); } } else if (context == null) { if (resolve) { type = universe.Mscorlib.ResolveType(context, name); } else if (ignoreCase) { type = universe.Mscorlib.FindTypeIgnoreCase(name.ToLowerInvariant()); } else { type = universe.Mscorlib.FindType(name); } } else { if (ignoreCase) { name = name.ToLowerInvariant(); type = context.FindTypeIgnoreCase(name); } else { type = context.FindType(name); } if (type == null && context != universe.Mscorlib.ManifestModule) { if (ignoreCase) { type = universe.Mscorlib.FindTypeIgnoreCase(name); } else { type = universe.Mscorlib.FindType(name); } } if (type == null && resolve) { if (universe.Mscorlib.__IsMissing && !context.__IsMissing) { type = universe.Mscorlib.ResolveType(context, name); } else { type = context.Assembly.ResolveType(context, name); } } } return(Expand(type, context, throwOnError, originalName, resolve, ignoreCase)); }