ObservableCollection <t>上的GetGenericArguments()是否为空?</t>

时间:2011-12-21 10:22:00

标签: c# observablecollection

在我的代码中,我正在处理ObservableCollections(作为System.Type)。然后我做:

var args = propertyType.GetGenericArguments();

知道我有什么类型的集合,我正在进行如下测试:

if (args.Count() != 0 && args[0] == typeof(string))

我正在测试args是不是空的但是我正在讨论的是“当我处理ObservableCollection时,args列表是否可能是空的?”

我不确定我问的是否清楚,只是告诉我它是不是!

2 个答案:

答案 0 :(得分:1)

没有。如果propertyType是泛型类型,则args永远不会为空。

在使用type.IsGenericType属性执行此代码之前,您可以检查类型是否是通用的。

因此我会这样建议:​​

if(propertyType.IsGenericType)
{
    var args = propertyType.GetGenericArguments();
    if (args[0] == typeof(string))
}

答案 1 :(得分:0)

如果您可以保证propertyType总是typeof(ObservableCollection<T>),那么可以安全地假设args总是有一个元素。