我在C#中有一个泛型类,如下所示:
public class GenericClass<T> { ... }
现在,我有一个对象的Type
对象,并希望通过反射或其他方式获取Type
GenericClass<T>
对象,其中T对应于该Type对象我有我的目标。
像这样:
Type requiredT = myobject.GetType();
Type wantedType = typeof(GenericClass<requiredT>);
显然这种语法不起作用,但我该怎么办?
答案 0 :(得分:9)
是的,你可以:
Type requiredT = ...
Type genericType = typeof(GenericClass<>);
Type wantedType = genericType.MakeGenericType(requiredT);
这会为您提供GenericClass<T>
类型对象,其中T对应于您的requiredT
。
然后,您可以使用Activator
构建实例,如下所示:
var instance = Activator.CreateInstance(wantedType, new Object[] { ...params });
答案 1 :(得分:5)
Type requiredT = myobject.GetType();
Type genericType = typeof(GenericClass<>);
Type wantedType = genericType.MakeGenericType(requiredT);
答案 2 :(得分:5)
Type wantedType = typeof(GenericClass<>).MakeGenericType(requiredT);