我有以下代码。 t
在第二行显示为无效。
Cannot resolve symbol 't'
如何使用Type t
实例化泛型类。
Type t = currentProperty.PropertyType;
var x = new MyClass<t>();
谢谢
答案 0 :(得分:4)
泛型只是一个编译时功能,而不是运行时功能。您需要使用反射创建类。
Type t = currentProperty.PropertyType;
Type desiredType = typeof(MyClass<>).MakeGenericType(t);
var instance = Activator.CreateInstance(desiredType);
答案 1 :(得分:2)
t
是在运行时计算的对象类型;你不能在C#编译器期望编译时类型 name 的地方使用它。编译器给出了该错误,因为它无法找到文字名称为“t”的类型。
但是,你可以做你想做的事,尽管不那么简单:
var t = currentProperty.PropertyType;
var genericType = typeof(MyClass<>).MakeGenericType(t);
var x = Activator.CreateInstance(genericType);