我有以下代码
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
}
如果我知道类型T是像这样的ClassD
,我将实例化classc ClassC<ClassD> objC=new ClassC<ClassD>();
如果我在运行时知道它怎么办,怎样才能将ClassD类型名称传递给classc。我尝试了以下,它抛出编译错误,请建议。
var tTypeName = "MyProject.ClassD";
ClassC<Type.GetType(tTypeName)>=new ClassC<Type.GetType(tTypeName)>
答案 0 :(得分:0)
你可以用反射做到这一点。有点像...
var myType = typeof(ClassC<>).MakeGenericType(new Type[] {typeof(ClassD)});
var constructor = myType.GetConstructor(new Type[0]);
object instance = constructor.Invoke(new object[0]);