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

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

 

      C#创建对象实例共有三种方法
    (1)通过System.Reflection.Assmbly里方法获得实例,主要根据类的Fullname和构造函数的参数创建实例,包括了私有和公有的,很强大

 public object CreateInstance(string typeName);//使用区分大小写的方式找到指定的类型名称,FullName,
 public object CreateInstance(string typeName, bool ignoreCase);//使用指定的类型名称,FullName,是否区分大小写由参数决定

//使用多种参数,binder为Null,不知道什么东西,args为构造函数的参数,culture和activation可以为null,不知道什么东西
public virtual object CreateInstance(string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[] activationAttributes);

//创建实例的例子:
var obj = Assembly.LoadFrom(@"D:\应用软件\VS2017\C#\WindowsFormsApp16\ClassLibrary1\bin\Debug\ClassLibrary1.dll").CreateInstance(参数)

                 (2)采用System.Activator里静态方法CreateInstance获得对应的实例

public static object CreateInstance(Type type);//根据公有的无参的构造函数创建对象实例
public static object CreateInstance(Type type, bool nonPublic);//如果公共或非公共默认构造函数都可以匹配,则为 true;如果只有公共默认构造函数可以匹配,则为 false。
public static object CreateInstance(Type type, object[] args, object[] activationAttributes);//args为构造函数的参数
public static object CreateInstance(Type type, params object[] args);
public static object CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture);
public static object CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[] activationAttributes);


public static ObjectHandle CreateInstance(string assemblyName, string typeName);
public static ObjectHandle CreateInstance(string assemblyName, string typeName, object[] activationAttributes);



 

posted @ 2018-09-02 17:06  辣根弟弟  阅读(3094)  评论(0编辑  收藏  举报