首页 > 代码库 > C# 根据对象类完整名称,创建对象实例

C# 根据对象类完整名称,创建对象实例

转自:http://blog.csdn.net/mm33211/article/details/8143890

C# 根据对象类完整名称,创建对象实例

        /// <summary>        /// 根据指定的类全名,返回对象实例        /// </summary>        /// <param name="objFullName">对象完整名称(包名和类名),如:com.xxx.Test</param>        public object createObjectInstance(string objFullName)        {            //获取当前目录            string currentDir = Assembly.GetExecutingAssembly().Location;            currentDir = currentDir.Substring(0, currentDir.LastIndexOf(\\));            DirectoryInfo di = new DirectoryInfo(currentDir);            //获取当前目录下的所有DLL文件            FileInfo[] files = di.GetFiles("*.dll");//只查.dll文件            //遍历所有文件,查找需要对象的实现定义            Type type = Type.GetType(objFullName);            if (type == null)            {                foreach (FileInfo fi in files)                {                    type = getObjectType(fi.FullName, objFullName);                    if (type != null)                    {                        break;                    }                }            }            if (type == null)            {                //throw new Exception("can not find class define of " + objFullName);                return null;            }            //将对象实例化            object obj=Activator.CreateInstance(type);            return obj;        }        /// <summary>        /// 从DLL文件中查找指定的对象定义        /// </summary>        /// <param name="dllFile">DLL文件路径</param>        /// <param name="objFullName">对象完整名称(包名和类名),如:com.xxx.Test</param>        /// <returns>如果找到,返回其对应的Type;如果没找到,则返回null</returns>        private Type getObjectType(string dllFile, string objFullName)        {            Type type = Assembly.LoadFile(dllFile).GetType(objFullName);            if (type != null)            {                Console.WriteLine("find obj in dll[" + dllFile + "]");                return type;            }            return null;        }

 

C# 根据对象类完整名称,创建对象实例