zoukankan      html  css  js  c++  java
  • 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;
            }
  • 相关阅读:
    springcloud有哪些特征
    可变参数
    递归
    增强的for循环
    Scanner对象
    注释
    Markdown常见的样式语法
    副本机制
    消费者分区分配策略
    SpringMVC 登陆判断
  • 原文地址:https://www.cnblogs.com/bluemaplestudio/p/4114612.html
Copyright © 2011-2022 走看看