查找类型的派生类型
在许多情况下,有必要确定给定类型的派生类型。但是,默认方法(例如迭代加载的程序集中的所有类型并检查其可分配性)可能效率低下。
使用反射
更高效的解决方案涉及使用反射来检索派生类型。这是一种基于 LINQ 的方法:
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from assemblyType in domainAssembly.GetTypes() where type.IsAssignableFrom(assemblyType) select assemblyType).ToArray();
此方法迭代所有程序集并检查给定类型是否可分配给每个程序集类型。
Fluent 版本
为了提高可读性,您可以使用 Fluent版本:
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(assemblyType => type.IsAssignableFrom(assemblyType)) .ToArray();
注意事项
以上是如何使用反射有效地查找给定类型的所有派生类型?的详细内容。更多信息请关注PHP中文网其他相关文章!