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;
        }
时间: 2024-11-14 13:45:27

C# 根据对象类完整名称,创建对象实例的相关文章

js中对象 类 实例的区别 数据类型 创建对象

类是对象的具体细分,实例是类中的一个具体事物. 基本数据类型和 引用数据类型 基本数据类型:numble string undefined null 引用数据类型:对象和函数 对象数据类型又细分为:对象类(object)数组类(array)正则类(reg..) 基本数据类型的特点:按照值来操作 引用数据类型的特点:先开一个空间,浏览器为其分配一个地址,接着把内容存到空间中,最后把地址赋给变量. ========================================== 创建对象的方式

C#通过对象类型创建对象实例的代码

下边代码内容是关于C#通过对象类型创建对象实例的代码. object[] paramObject = new object[] {}; object obj = Activator.CreateInstance(type, paramObject); 或者 string className = "MyType";MyType myType = (MyType) Activator.CreateInstance(Type.GetType(className), new object[]{

Java ——对象 类 方法重载 构造方法 封装

本节重点思维导图 快捷键 生成代码:alt+shift+s 提取变量:alt+shift+L 快速复制行:alt+ctrl+向上或向下的箭头 删除行:ctrl+d 类:对同一种事物共同属性和行为的抽象 对象:根据类创建出来的具体的实物 方法重载 在同一个类中提供多个同名不同参的方法. 重载要求:方法名称相同,但参数的   [ 类型不同     or   参数的个数不同     or     参数的顺序不同] public class Demo { public void fun1() { } p

C# - 使用配置文件和反射来创建对象实例

使用配置文件和反射来创建对象实例 为了增加程序的可扩展性,提高可配置性,常常需要使用配置文件+反射来动态调用方法. 下面定义的SIT类包含一个接口方法,演示如何使用配置文件及反射来动态调用. using System; namespace ConsoleApp1.CRMDataHandler { public class SIT : CRMDataHandler, IIncident { public void CreateIncident() { Console.WriteLine("{0}

3.2-面向对象(类与对象之间的关系)

3.2 类与对象的关系 使用计算机语言就是不断的在描述现实生活中的事物. java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义. 对象即是该类事物实实在在存在的个体 . 3.2.1  类与对象( 图例) 3.2.2  类的定义 生活中描述事物无非就是描述事物的属性和行为. ?  如:人有身高,体重等属性,有说话,打球等行为. Java中用类class来描述事物也是如此 ?  属性:对应类中的成员变量. ?  行为:对应类中的成员函数. 定义类其实在定义类中的成员(成员变量和成员函

Ruby学习: 类的定义和实例变量

ruby是完全面向对象的,所有的数据都是对象,没有独立在类外的方法,所有的方法都在类中定义的. 一.类的定义语法 类的定义以 class 关键字开头,后面跟类名,以 end标识符结尾. 类中的方法以 def关键字开头,后面跟方法名及参数列表(如果有的话),以 end标识符结尾. 类也有构造函数,名字必须为initialize. 对象通过new来创建,new是类的方法. 举例如下: class Demo def initialize puts "begin create object"

C#反射--------创建对象实例

C#反射--------创建对象实例 C#创建对象实例共有三种方法 (1)通过System.Reflection.Assmbly里方法获得实例,主要根据类的Fullname和构造函数的参数创建实例,包括了私有和公有的,很强大  public object CreateInstance(string typeName);//使用区分大小写的方式找到指定的类型名称,FullName, public object CreateInstance(string typeName, bool ignoreC

Object对象类

Object对象类是所有类的祖先,他是默认自动继承的 Java为什么要做一个对象类呢?对象类的目的就是归一了类型,他就是把所有的类所有的对象归纳成为 Object类型.因为对象他认为对象应该拥有一些什么方法和属性全部都定制下来.那么就也就规定了今后的都有哪些方法和属性. toString():String方法是父类留下来的一个方法,如果不重写那么就由Object来实现,如果重写那么这个方法就能写很多的东西.toString()方法其实 是用来打印一些类的信息来说明类的一些问题, toString

Laravel 5.5 的自定义验证对象/类

本文和大家分享的主要是Laravel 5.5 的自定义验证对象/类相关内容,一起来看看吧,希望对大家学习Laravel有所帮助. Laravel 5.5 将提供一个全新的自定义验证规则的对象,以作为原来的 Validator::extend 方法的替代. Laravel 中的表单验证是比较方便的,而且内置了大量的可用验证规则,但不管官方提供了多少,总还是会有满足不了需求的时候.很多时候我们会直接用正则表达式来处理这种特殊的验证,也有时候我们会选择用 Validator::extend来扩展一个自