C#得到类型Generic <t>给定T </t>

时间:2009-10-08 12:20:06

标签: c# generics types

我在C#中有一个泛型类,如下所示:

   public class GenericClass<T> { ... }

现在,我有一个对象的Type对象,并希望通过反射或其他方式获取Type GenericClass<T>对象,其中T对应于该Type对象我有我的目标。

像这样:

   Type requiredT = myobject.GetType();
   Type wantedType = typeof(GenericClass<requiredT>);

显然这种语法不起作用,但我该怎么办?

3 个答案:

答案 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);