尋找類型的衍生類型
在許多情況下,有必要確定給定類型的衍生類型。但是,預設方法(例如迭代載入的程式集中的所有類型並檢查其可分配性)可能效率低下。
使用反射
更有效率的解決方案涉及使用反射來檢索派生類型。這是一種基於 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中文網其他相關文章!