高效识别派生类型
在 .NET 中,查找给定类型的所有派生类型是运行时操作期间经常遇到的一项有用任务。一种常见的方法涉及迭代加载的程序集中的所有类型并检查目标类型的可分配性。但是,此方法可能既慢又代码混乱。
性能更高、更优雅的解决方案是利用 LINQ 的强大功能:
var listOfDerived = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from type in domainAssembly.GetTypes() where typeof(BaseType).IsAssignableFrom(type) select type).ToArray();
此 Linq 查询可有效搜索所有程序集及其类型,仅选择那些从指定基本类型继承的类型。
优化和附加注意事项
要进一步优化性能,请考虑使用domainAssembly.GetExportedTypes() 而不是GetTypes()。这仅检索公开可见的类型,从而可能减少所需的检查数量。
此外,请注意 IsAssignableFrom 包括基类型本身。如有必要,通过添加 && type != typeof(BaseType) 来排除它。要仅过滤具体类,请包含 && !type.IsAbstract。
结论
通过利用 LINQ 并考虑这些优化,查找派生类型变得高效且简单任务,显着提高代码的性能和可读性。
以上是如何在 .NET 中高效查找给定类型的所有派生类型?的详细内容。更多信息请关注PHP中文网其他相关文章!