2010-10-03 78 views
1

我新來c#和我想創建一個方法,它需要一個字符串,然後它實例化一個對象使用該字符串作爲類型。字符串文字轉換爲類型或名稱空間的泛型c#

public void CreateRepository(string name) { 
     var repository = new Repository<name>(); 
} 

例如,

顯然我得到一個編譯器錯誤,但我如何將我的字符串轉換爲命名空間?

+2

爲什麼你要這樣來做?爲什麼你需要從字符串中創建這個類型,以後你想對結果做什麼? – svick 2010-10-03 12:56:06

回答

4

你能做到這樣:

public void CreateRepository(string name) 
{ 
    var type = Type.GetType(name); 
    var genericRepositoryType = typeof(Repository<>).MakeGenericType(type); 
    var repositoryObj = Activator.CreateInstance(genericRepositoryType); 
    // N.B. repositoryObj variable is System.Object 
    //  but is also an istance of Repository<name> 
}