2015-07-01 191 views
0

我有以下代碼實例化泛型類型T的一類被稱爲名字不是類型

private static void Main(string[] args) 
    { 
     ClassC<ClassD> objC=new ClassC<ClassD>(); 
     var tTypeName = "MyProject.ClassD"; 
     ClassC<Type.GetType(tTypeName)>=new ClassC<Type.GetType(tTypeName)>(); 
    } 
} 

public class ClassC<T> 
{ 
    ///some code here 
} 

public class ClassD 
{ 
    ///some code here 
} 

我將實例classc如果我知道的T型是D類這樣

ClassC<ClassD> objC=new ClassC<ClassD>(); 

什麼如果我在運行時知道它,我如何將ClassD類型名稱傳遞給classc。我試了下面,它拋出編譯錯誤,請指教。

var tTypeName = "MyProject.ClassD"; 
ClassC<Type.GetType(tTypeName)>=new ClassC<Type.GetType(tTypeName)> 
+1

在運行時解析類型時,您必須使用Activator和Reflection。 – Dai

+0

謝謝@hatchet我正在尋找答案,直到現在還沒有進入這個線程。這有助於我解決我的問題。 – Esen

回答

0

你可以用反射來做到這一點。類似...

var myType = typeof(ClassC<>).MakeGenericType(new Type[] {typeof(ClassD)}); 
var constructor = myType.GetConstructor(new Type[0]); 
object instance = constructor.Invoke(new object[0]);