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



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM