ObservableCollection上的 GetGenericArguments() 是否有效?可以为空吗?

发布于 2024-12-22 10:10:28 字数 364 浏览 1 评论 0原文

在我的代码中,我正在处理 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只有影子陪我不离不弃 2024-12-29 10:10:28

不可以。如果 propertyType 是泛型类型,则 args 永远不能为空。

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

因此我会这样建议:

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

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:

if(propertyType.IsGenericType)
{
    var args = propertyType.GetGenericArguments();
    if (args[0] == typeof(string))
}
空城之時有危險 2024-12-29 10:10:28

如果您可以保证 propertyType 始终为 typeof(ObservableCollection),那么可以安全地假设 args 始终有一个元素。

If you can guarantee that propertyType is always typeof(ObservableCollection<T>) then it's safe to assume args will always have one element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文