Type.GenericTypeArguments属性与Type.GetGenericArguments()方法

时间:2013-10-21 20:19:14

标签: c# reflection f#

Type.GenericTypeArguments属性和Type.GetGenericArguments()方法之间有什么区别?他们总是回归同样的事情,还是有不同的情况?

2 个答案:

答案 0 :(得分:28)

typeof(List<>)是一个不同的例子。 property返回一个空数组,而method返回一个包含泛型T的数组。 (此TIsGenericParameter 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;
    }
}

此实现永远不会被其他东西覆盖。