標籤:and strong 類型 app typename info 獲得 window 軟體
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);
C#反射--------建立對象執行個體