// Token: 0x060014BF RID: 5311 RVA: 0x0003D710 File Offset: 0x0003B910 private static Type ResolveType(Assembly assembly, string[] names, Func <Assembly, string, bool, Type> typeResolver, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark) { string text = TypeNameParser.EscapeTypeName(names[0]); Type type; if (typeResolver != null) { type = typeResolver(assembly, text, ignoreCase); if (type == null && throwOnError) { string message = (assembly == null) ? Environment.GetResourceString("TypeLoad_ResolveType", new object[] { text }) : Environment.GetResourceString("TypeLoad_ResolveTypeFromAssembly", new object[] { text, assembly.FullName }); throw new TypeLoadException(message); } } else if (assembly == null) { type = RuntimeType.GetType(text, throwOnError, ignoreCase, false, ref stackMark); } else { type = assembly.GetType(text, throwOnError, ignoreCase); } if (type != null) { BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.NonPublic; if (ignoreCase) { bindingFlags |= BindingFlags.IgnoreCase; } int i = 1; while (i < names.Length) { type = type.GetNestedType(names[i], bindingFlags); if (type == null) { if (throwOnError) { throw new TypeLoadException(Environment.GetResourceString("TypeLoad_ResolveNestedType", new object[] { names[i], names[i - 1] })); } break; } else { i++; } } } return(type); }
private static Type ResolveType(Assembly assembly, string[] names, Func <Assembly, string, bool, Type> typeResolver, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark) { string str = TypeNameParser.EscapeTypeName(names[0]); Type type; if (typeResolver != null) { type = typeResolver(assembly, str, ignoreCase); if (type == (Type)null & throwOnError) { string resourceString; if (!(assembly == (Assembly)null)) { resourceString = Environment.GetResourceString("TypeLoad_ResolveTypeFromAssembly", (object)str, (object)assembly.FullName); } else { resourceString = Environment.GetResourceString("TypeLoad_ResolveType", (object)str); } throw new TypeLoadException(resourceString); } } else { type = !(assembly == (Assembly)null) ? assembly.GetType(str, throwOnError, ignoreCase) : (Type)RuntimeType.GetType(str, throwOnError, ignoreCase, false, ref stackMark); } if (type != (Type)null) { BindingFlags bindingAttr = BindingFlags.Public | BindingFlags.NonPublic; if (ignoreCase) { bindingAttr |= BindingFlags.IgnoreCase; } for (int index = 1; index < names.Length; ++index) { type = type.GetNestedType(names[index], bindingAttr); if (type == (Type)null) { if (throwOnError) { throw new TypeLoadException(Environment.GetResourceString("TypeLoad_ResolveNestedType", (object)names[index], (object)names[index - 1])); } break; } } } return(type); }