拥有这样的通用类型:
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
一样。
答案 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;