/// <summary> /// Resolves a non generic type. /// </summary> /// <param name="typeName">Name of the type.</param> /// <returns></returns> /// <exception cref="System.TypeLoadException"> /// </exception> protected Type ResolveNonGeneric(string typeName) { BaseAssemblyInfo typeInfo = new BaseAssemblyInfo(true); typeInfo.OriginalName = typeName; Type result = null; try { result = typeInfo.IsAssemblyReady ? LoadFromAssembly(typeInfo) : LoadFromAllAssemblies(typeInfo); if (result == null) { string[] tokens = typeInfo.OriginalName.Split('.'); //typeInfo.Name = tokens[tokens.Length - 1]; string s = tokens[0]; for (int i = 1; i < tokens.Length - 1; i++) { s = s + "." + tokens[i]; } typeInfo.AssemblyName = s; result = LoadFromAssembly(typeInfo); } } catch { //throw new TypeLoadException(string.Format("Could not resolve type '{0}'.", typeName), ex); return(null); } return(result); }
/// <summary> /// Loads a type from all assemblies of the current domain. /// </summary> /// <param name="typeInfo">The type info.</param> /// <returns></returns> private Type LoadFromAllAssemblies(BaseAssemblyInfo typeInfo) { Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly assembly in assemblies) { Type type = assembly.GetType(typeInfo.Name, false, true); if (type != null) { return(type); } } return(null); }
/// <summary> /// Loads a type from assembly. /// </summary> /// <param name="typeInfo">The type info.</param> /// <returns></returns> private Type LoadFromAssembly(BaseAssemblyInfo typeInfo) { Assembly assembly = Assembly.Load(typeInfo.AssemblyName); return(assembly == null ? null : assembly.GetType(typeInfo.Name, true, true)); }