Type.GenericTypeArguments
属性和Type.GetGenericArguments()
方法之间有什么区别?他们总是回归同样的事情,还是有不同的情况?
答案 0 :(得分:28)
typeof(List<>)
是一个不同的例子。 property返回一个空数组,而method返回一个包含泛型T
的数组。 (此T
有IsGenericParameter
true
)
通过阅读文档,我认为您可以将GenericTypeArguments
视为GetGenericArguments().Where(t => !t.IsGenericParameter).ToArray()
,即只考虑具体类型。另请参阅ContainsGenericParameters
。
答案 1 :(得分:0)
参考资料提供了确切答案:
public virtual Type[] GenericTypeArguments{
get{
if(IsGenericType && !IsGenericTypeDefinition){
return GetGenericArguments();
}
else{
return Type.EmptyTypes;
}
}
此实现永远不会被其他东西覆盖。