如何获取 SomeType<T1> 的 T 类型 [重复]
Posted
技术标签:
【中文标题】如何获取 SomeType<T1> 的 T 类型 [重复]【英文标题】:How to get type of T of SomeType<T1> [duplicate] 【发布时间】:2013-08-06 15:47:09 【问题描述】:有这样的泛型:
SomeType<T>
SomeType<T1, T2>
并且只有它们的类型:
Type type1 = typeof(SomeType<T>);
Type type2 = typeof(SomeType<T1, T2>);
如何从type1
获取T
的类型
和T1
和T2
来自type2
?
示例:
使用typeof(SomeType<int>)
只会返回SomeType´1
。
但我正在寻找一种获得int
类型的方法,就像typeof(int)
一样。
【问题讨论】:
Type.GetGenericArguments()
?
***.com/questions/557340/…
【参考方案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<T>
没有实现索引器时,这是否有效?以上是关于如何获取 SomeType<T1> 的 T 类型 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
C# 如何将 Expression<Func<SomeType>> 转换为 Expression<Func<OtherType>>
Observable<> 不可分配给类型 Observable<SomeType[]>
了解 listen: false 与 Provider<SomeType>.of(context, listen: false) 一起使用时的工作原理
如何在不获取“SomeType@2f92e0f4”的情况下打印我的 Java 对象?