ObservableCollection上的 GetGenericArguments() 是否有效?可以为空吗?
在我的代码中,我正在处理 ObservableCollections(作为 System.Type)。然后我做:
var args = propertyType.GetGenericArguments();
为了知道我拥有什么类型的集合,我正在做这样的测试:
if (args.Count() != 0 && args[0] == typeof(string))
我正在测试 args 是否不为空,但我想知道的是“当我处理 ObservableCollection 时,args 列表是否可能为空?”
我不确定我问的是否清楚,如果不清楚请告诉我!
In my code I'm dealing with ObservableCollections (as a System.Type). Then I do :
var args = propertyType.GetGenericArguments();
to know what type of Collection I have I'm doing tests like :
if (args.Count() != 0 && args[0] == typeof(string))
I'm testing if args is not empty but what Im wodering is "Is it possible that the args list is empty when I'm dealing with ObservableCollection ?"
Im not sure if what Im asking is clear, just tell me if it's not !
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不可以。如果 propertyType 是泛型类型,则 args 永远不能为空。
您可以在执行此代码之前使用 type.IsGenericType 属性检查该类型是否为泛型。
因此我会这样建议:
No. args can never be empty if the propertyType is a generic type.
You can rather check if the type is generic before executing this code using
type.IsGenericType
property.Hence I would suggest it this way:
如果您可以保证
propertyType
始终为typeof(ObservableCollection)
,那么可以安全地假设 args 始终有一个元素。If you can guarantee that
propertyType
is alwaystypeof(ObservableCollection<T>)
then it's safe to assume args will always have one element.