C# Activator

只要你在發表於2018-11-14

需要動態的建立一個例項模型的時候,就用Activator.CreateInstance(Type type);如果是明確的知道要建立哪個例項的模型,就可以用 new

 

C#在類工廠中動態建立類的例項,所使用的方法為:

1. Activator.CreateInstance (Type)

2. Activator.CreateInstance (Type, Object[])

 

兩種方法區別僅為:建立無引數的構造方法和建立有引數的建構函式。

 

動態建立時,可能會動態使用到外部應用的DLL中類的例項,則此時需要進行反編譯操作,使用Reflection命名控制元件下的Assembly類。

//先使用Assembly類載入DLL,再根據類的全路徑獲取類

object result = null;
Type typeofControl = null;
Assembly tempAssembly;

tempAssembly = Assembly.LoadFrom(vDllName);
typeofControl = tempAssembly.GetType(vFullClassName);
result = Activator.CreateInstance(typeofControl, objParam);

 

 

例項化一個類的方式


  • 用 New 關鍵字例項化一個類

New 關鍵字用於建立物件和呼叫建構函式。是例項化一個類最常見的方式。

  • 用 Activator 例項化一個類

Activator 用以在本地或從遠端建立物件型別,或獲取對現有遠端物件的引用。其 CreateInstance 方法建立在程式集中定義的型別的例項。

  • 用 Assembly 例項化一個類

Assembly 表示一個程式集,它是一個可重用、無版本衝突並且可自我描述的公共語言執行庫應用程式構造塊。該類可以載入程式集、瀏覽程式集的後設資料和構成部分、發現程式集中包含的型別以及建立這些型別的例項。

載入程式集的推薦方式是使用 Load 方法。GetType 方法可用於在程式集中搜尋特定型別。CreateInstance 方法可用於在程式集中搜尋和建立型別的例項。