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

 风里火 发布于 2023-02-13 14:45

我有一个集合ot类型:

List types;

我想找出哪些类型继承自具体的泛型类而不关心T:

public class Generic

我尝试过:

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

但总是返回false,可能是由于泛型元素.有任何想法吗?

提前致谢.

1 个回答
  • 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)) {
           // ...
        }
    }
    

    2023-02-13 14:49 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有