首页 > 后端开发 > C++ > LINQ 如何高效查找指定基本类型的所有派生类型?

LINQ 如何高效查找指定基本类型的所有派生类型?

Linda Hamilton
发布: 2025-01-03 19:04:41
原创
667 人浏览过

How Can LINQ Efficiently Find All Derived Types of a Specified Base Type?

查找指定类型的派生类型

在编程中,经常需要确定给定基类型的所有派生类型。传统上,这是通过费力的技术来实现的,例如迭代加载的程序集中的所有类型并手动检查目标类型的可分配性。

但是,存在使用 LINQ(语言集成查询)的更高效、更优雅的解决方案。以下代码片段提供了一种简单且高效的方法来完成此任务:

var listOfDerivedTypes = (
                from domainAssembly in AppDomain.CurrentDomain.GetAssemblies()
                from type in domainAssembly.GetTypes()
                where typeof(BaseTypeName).IsAssignableFrom(type)
                select type).ToArray();
登录后复制

替代流利语法:

LINQ 表达式也可以用更多种语言编写流畅的风格增强可读性:

var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies()
                .SelectMany(domainAssembly => domainAssembly.GetTypes())
                .Where(type => typeof(BaseTypeName).IsAssignableFrom(type))
                .ToArray();
登录后复制

自定义:

  • 仅公开可见类型:要仅检索公开可见的类型,请使用domainAssembly .GetExportedTypes() 而不是domainAssembly.GetTypes().
  • 排除原始基类: 要防止原始基类型包含在结果中,请将 && type != typeof(BaseTypeName) 添加到 where 子句。
  • 排除抽象类:要排除抽象类,请添加 && ! type.IsAbstract 到 where 子句。
  • 泛型类型:处理泛型类型需要额外的考虑。如需指导,请参阅“详细信息”部分中的链接资源。

以上是LINQ 如何高效查找指定基本类型的所有派生类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板