如何获取某种类型的T类型

本文关键字:类型 T1 种类 何获取 获取 | 更新日期: 2023-09-27 18:26:46

具有这样的泛型类型:

SomeType<T>
SomeType<T1, T2>

并且只有它们的类型:

Type type1 = typeof(SomeType<T>);
Type type2 = typeof(SomeType<T1, T2>);

如何从type1
获取T类型 和T1T2type2

例:
使用 typeof(SomeType<int>) 只会返回SomeType´1
但我正在寻找一种方法来获取int类型,就像typeof(int)一样。

如何获取某种类型的T类型<T1>

您应该Type类上使用 GetGenericArguments 方法,该方法将返回用于指定开放泛型类型的特定类型。您的案例示例:

var type = typeof(SomeType<int, string>);
foreach(Type closedType in type.GetGenericArguments())
{
    Console.WriteLine(closedType);
}

哪里

class SomeType<T1, T2> {}

将打印:

System.Int32
System.String

取决于SomeType但我建议这样的事情:

Type innerType = type1.GetType().GetProperty("Item").PropertyType;