예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <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);
 }
예제 #3
0
        /// <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));
        }