【问题标题】:How to get type of T of SomeType<T1> [duplicate]如何获取 SomeType<T1> 的 T 类型 [重复]
【发布时间】:2013-08-06 15:47:09
【问题描述】:

有这样的泛型:

SomeType<T>
SomeType<T1, T2>

并且只有它们的类型:

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

如何从type1获取T的类型
T1T2 来自type2

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

【问题讨论】:

标签: c# generics types


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    取决于SomeType,但我建议这样:

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

    【讨论】:

    • 我猜Item这个属性是指索引器。但是当SomeType&lt;T&gt; 没有实现索引器时,这是否有效?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多