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

Tot*_*oto 3 c# generics types

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

   public class GenericClass<T> { ... }
Run Code Online (Sandbox Code Playgroud)

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

像这样:

   Type requiredT = myobject.GetType();
   Type wantedType = typeof(GenericClass<requiredT>);
Run Code Online (Sandbox Code Playgroud)

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

ang*_*son 9

是的你可以:

Type requiredT = ...
Type genericType = typeof(GenericClass<>);
Type wantedType = genericType.MakeGenericType(requiredT);
Run Code Online (Sandbox Code Playgroud)

这将为您提供GenericClass<T>Type对象,其中T对应于您的requiredT.

然后,您可以使用Activator如下构造实例:

var instance = Activator.CreateInstance(wantedType, new Object[] { ...params });
Run Code Online (Sandbox Code Playgroud)


BFr*_*ree 5

Type requiredT = myobject.GetType();
Type genericType = typeof(GenericClass<>);
Type wantedType = genericType.MakeGenericType(requiredT);
Run Code Online (Sandbox Code Playgroud)


Luk*_*keH 5

Type wantedType = typeof(GenericClass<>).MakeGenericType(requiredT);
Run Code Online (Sandbox Code Playgroud)