当前位置:  开发笔记 > 编程语言 > 正文

.NET:如何检查泛型类中的类型?

如何解决《.NET:如何检查泛型类中的类型?》经验,为你挑选了2个好方法。

如何获取类中泛型类的类型?

一个例子:

我构建了一个实现ICollection 的泛型类型集合.在我内部有类似的方法

    public void Add(T item){
        ...
    }

    public void Add(IEnumerable enumItems){
        ...
    }

如何在方法中询问给定类型T

我的问题的原因是:如果对象被用作T,则集合使用Add(对象项)而不是Add(IEnumerable enumItems),即使参数是IEnumerable.因此,在第一种情况下,它会将整个可枚举集合添加为一个对象,而不是可枚举集合的多个对象.

所以我需要类似的东西

if (T is object) {
    // Check for IEnumerable
}

但当然这在C#中无效.建议?

非常感谢你!

迈克尔



1> Keith..:

您可以使用: typeof(T)

if (typeof(T) == typeof(object) ) {
    // Check for IEnumerable
}


这回答了标题中提出的问题.

2> Marc Gravell..:

就个人而言,我会通过重命名IEnumerable方法来解决问题AddRange.这避免了这些问题,并且与现有的API一致,例如List.AddRange.

T你想要添加工具时,它还可以保持清洁IEnumerable(很少见,我会承认).

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有