Type.GenericTypeArguments 属性 vs Type.GetGenericArguments() 方
本文关键字:Type vs GenericTypeArguments 属性 GetGenericArguments | 更新日期: 2023-09-27 18:36:15
Type.GenericTypeArguments
属性和Type.GetGenericArguments()
方法有什么区别?它们是否总是返回相同的内容,或者是否存在不同的情况?
typeof(List<>)
是它们不同的一个例子。该属性返回一个空数组,而该方法返回一个包含泛型T
的数组。(此T
有IsGenericParameter
true
)
通过阅读文档,我认为您可以将GenericTypeArguments
视为GetGenericArguments().Where(t => !t.IsGenericParameter).ToArray()
,即仅具体类型。另请参阅ContainsGenericParameters
。
参考来源给出了确切的答案:
public virtual Type[] GenericTypeArguments{
get{
if(IsGenericType && !IsGenericTypeDefinition){
return GetGenericArguments();
}
else{
return Type.EmptyTypes;
}
}
此实现永远不会被其他内容覆盖。