如何获得SomeType <t1> </t1>的T类型

时间:2013-08-06 15:47:09

标签: c# generics types

拥有这样的通用类型:

SomeType<T>
SomeType<T1, T2>

并且只有它们的类型:

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

如何从T获取type1的类型  来自T1的{​​{1}}和T2

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

2 个答案:

答案 0 :(得分:4)

您应该在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

答案 1 :(得分:0)

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

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