2009-01-07 69 views
5

當您在ASP.NET v2應用程序中將類名稱指定爲字符串時,如何創建對象的實例?例如,我在應用程序的app_code部分定義了一個名爲SystemLog的類。這個類是在Reports命名空間中定義的。要創建對象的實例,我做這樣的事情:如何在ASP.NET應用程序中創建類的實例

昏暗的MyObject作爲新Global.Reports.SystemLog

不過,我想創建使用字符串來定義這個類型的對象。類型名稱作爲字符串存儲在SQL數據庫中。我認爲這可能與Activator.CreateInstance(AssemblyName,TypeName)有關,但我不知道在這些字符串中傳遞什麼。什麼是ASP.NET Web應用程序的程序集名稱?

幫助!

謝謝,羅布。

PS。我不想要硬編碼Select語句:-)

+0

PS。數據庫/字符串會像「Reports.SystemLog」 – 2009-01-07 23:06:06

回答

5
string typeName = "Your Type Name Here"; 
Type t = Type.GetType(typeName); 
object o = Activator.CreateInstance(t); 

這會給你一個instanciated類型。如果將由您決定將其轉換爲正確的類型並調用適當的方法。

如果您需要創建一個沒有無參數構造函數的類型,那麼CreateInstance會有一個重載,該重載需要傳遞一個對象參數給構造函數。更多信息請點擊此處MSDN article

0

您可以用它來從一個特定的組件得到它:

大會總成= Assembly.Load( 「MyAssembly程序」);

類型ObjectType = assembly.GetType(「Type name here」);

then ..... object o = Activator.CreateInstance(ObjectType);

2

以下是能夠創造型,即使它從另一個大會:

public object CreateInstance(string typeName) { 
    var type = AppDomain.CurrentDomain.GetAssemblies() 
       .SelectMany(a => a.GetTypes()) 
       .FirstOrDefault(t => t.FullName == typeName); 

    return type.CreateInstance(); 
} 
相關問題