如何获取从通用类继承的集合的所有类型?

伊格纳西奥·索勒·加西亚(Ignacio Soler Garcia)

我有一个集合ot类型:

List<Type> types;

而且我想找出这些类型中的哪些类型是从具体的泛型类继承而来的,而无需关心T:

public class Generic<T>

我尝试过:

foreach(Type type in types)
{
    if (typeof(Generic<>).IsAssignableFrom(type))
    {
        ....
    }
}

但是总是返回false,这可能是由于泛型元素造成的。有任何想法吗?

提前致谢。

马克·格雷维尔(Marc Gravell)

AFAIK,没有类型报告为从开放的通用类型继承:我怀疑您将不得不手动循环:

static bool IsGeneric(Type type)
{
    while (type != null)
    {
        if (type.IsGenericType
            && type.GetGenericTypeDefinition() == typeof(Generic<>))
        {
            return true;
        }
        type = type.BaseType;
    }
    return false;
} 

然后,子列表为:

var sublist = types.FindAll(IsGeneric);

或者:

var sublist = types.Where(IsGeneric).ToList();

或者:

foreach(var type in types) {
    if(IsGeneric(type)) {
       // ...
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取通用抽象类的所有继承的类

来自分类Dev

获取所有继承Ninject中通用约束的类型

来自分类Dev

获取所有继承Ninject中通用约束的类型

来自分类Dev

如何在通用Lisp中获取类的所有实例?

来自分类Dev

如果我有超类类型的集合,如何获得特定子类类型的所有项?

来自分类Dev

获取类继承并在C#中实现的所有类型和接口

来自分类Dev

如何从类对象获取(通用)类型

来自分类Dev

Java获取集合的通用类型

来自分类Dev

如何创建具有通用值类型参数的类型的集合

来自分类Dev

并非所有类型都获取继承类型列表

来自分类Dev

如何使用Groovy获取没有继承方法的类的所有方法名称?

来自分类Dev

如何使用Groovy获取没有继承方法的类的所有方法名称?

来自分类Dev

dart,给定一个类的实例,是否有可能以升序获取其继承的所有类型的列表?

来自分类Dev

Grails [Groovy],如何获取类继承的所有方法的清单?

来自分类Dev

如何获取属于 Python 3 中特定类的所有属性(继承的除外)的值

来自分类Dev

具有类继承和泛型类型继承的C#集合不允许添加继承的类

来自分类Dev

让类继承模板类型的所有运算符

来自分类Dev

如何使用MongoEngine获取所有集合

来自分类Dev

通用类::类型参数<T>属性继承

来自分类Dev

Smalltallk-如何获取类的对象(当前实例)中所有实例变量的数组(或集合)?

来自分类Dev

如何获取集合中所有文件的所有文件?

来自分类Dev

C#如何从基类的派生类中获取特定类型的所有字段?

来自分类Dev

从集合中获取所有一种值类型

来自分类Dev

我可以将具有通用类型的类用于其他类的集合吗?

来自分类Dev

具有从非通用基类继承的通用类的MongoDB C#驱动程序类型区分符

来自分类Dev

如何从实现类中获取通用接口的类型参数?

来自分类Dev

我如何从mpl :: vector中的所有类型继承?

来自分类Dev

尼姆 如何继承不同类型的所有操作?

来自分类Dev

我如何从mpl :: vector中的所有类型继承?

Related 相关文章

  1. 1

    获取通用抽象类的所有继承的类

  2. 2

    获取所有继承Ninject中通用约束的类型

  3. 3

    获取所有继承Ninject中通用约束的类型

  4. 4

    如何在通用Lisp中获取类的所有实例?

  5. 5

    如果我有超类类型的集合,如何获得特定子类类型的所有项?

  6. 6

    获取类继承并在C#中实现的所有类型和接口

  7. 7

    如何从类对象获取(通用)类型

  8. 8

    Java获取集合的通用类型

  9. 9

    如何创建具有通用值类型参数的类型的集合

  10. 10

    并非所有类型都获取继承类型列表

  11. 11

    如何使用Groovy获取没有继承方法的类的所有方法名称?

  12. 12

    如何使用Groovy获取没有继承方法的类的所有方法名称?

  13. 13

    dart,给定一个类的实例,是否有可能以升序获取其继承的所有类型的列表?

  14. 14

    Grails [Groovy],如何获取类继承的所有方法的清单?

  15. 15

    如何获取属于 Python 3 中特定类的所有属性(继承的除外)的值

  16. 16

    具有类继承和泛型类型继承的C#集合不允许添加继承的类

  17. 17

    让类继承模板类型的所有运算符

  18. 18

    如何使用MongoEngine获取所有集合

  19. 19

    通用类::类型参数<T>属性继承

  20. 20

    Smalltallk-如何获取类的对象(当前实例)中所有实例变量的数组(或集合)?

  21. 21

    如何获取集合中所有文件的所有文件?

  22. 22

    C#如何从基类的派生类中获取特定类型的所有字段?

  23. 23

    从集合中获取所有一种值类型

  24. 24

    我可以将具有通用类型的类用于其他类的集合吗?

  25. 25

    具有从非通用基类继承的通用类的MongoDB C#驱动程序类型区分符

  26. 26

    如何从实现类中获取通用接口的类型参数?

  27. 27

    我如何从mpl :: vector中的所有类型继承?

  28. 28

    尼姆 如何继承不同类型的所有操作?

  29. 29

    我如何从mpl :: vector中的所有类型继承?

热门标签

归档