• 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;
            }
  • 相关阅读:
    window servet 2012 r2 配置php服务器环境
    thinkphp5 input坑
    tp5命名空间补充
    cookie和session
    thinkphp5.0 模型的应用
    JavaScript--计时器
    Runtime Only VS Runtime+Compil
    Object.keys
    [LeetCode 17]电话号码的字母组合
    数组里的字符串转换成数字或者把数字转换成字符串
  • 原文地址:https://www.cnblogs.com/bluemaplestudio/p/4114612.html
Copyright © 2020-2023  润新知