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);
