查找某个类型的所有派生类型
在编程中,通常需要识别从特定基类型继承的所有类型。目前,一种常见的方法是迭代加载的程序集中的所有类型,并检查它们是否可分配给基类型。
但是,更高效、更简洁的方法是利用 LINQ 查询来检索所有派生类型types:
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from type in domainAssembly.GetTypes() where typeof(BaseType).IsAssignableFrom(type) select type).ToArray();
此查询搜索加载到当前 AppDomain 的程序集中的所有类型,并筛选可分配给基本类型的类型,有效返回派生列表
流畅的版本和细节:
代码可以用更流畅的风格表达:
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(type => typeof(BaseType).IsAssignableFrom(type)) .ToArray();
其他注意事项:
以上是如何在 C# 中高效查找基类型的所有派生类型?的详细内容。更多信息请关注PHP中文网其他相关文章!