找出某個類型的所有衍生型別
在程式設計中,通常需要辨識從特定基底型別繼承的所有型別。目前,常見的方法是迭代載入的程式集中的所有類型,並檢查它們是否可指派給基底類型。
但是,更有效率、更簡潔的方法是利用 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中文網其他相關文章!