1

有这样的泛型类型:

SomeType<T>
SomeType<T1, T2>

并且只有它们的类型:

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

如何获取 Tfromtype1
和fromT1的类型?T2type2

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

4

2 回答 2

4

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

var type = typeof(SomeType<int, string>);

foreach(Type closedType in type.GetGenericArguments())
{
    Console.WriteLine(closedType);
}

在哪里

class SomeType<T1, T2> {}

将打印:

System.Int32
System.String
于 2013-08-06T15:50:33.417 回答
0

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

Type innerType = type1.GetType().GetProperty("Item").PropertyType;
于 2013-08-06T15:52:28.370 回答