尋找指定類型的衍生類型
在程式設計中,經常需要確定給定基底類型的所有衍生類型。傳統上,這是透過費力的技術來實現的,例如迭代加載的程式集中的所有類型並手動檢查目標類型的可分配性。
但是,有使用 LINQ(語言整合查詢)的更有效率、更優雅的解決方案。以下程式碼片段提供了一種簡單且高效的方法來完成此任務:
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from type in domainAssembly.GetTypes() where typeof(BaseTypeName).IsAssignableFrom(type) select type).ToArray();
替代流利語法:
LINQ表達式也可以用更多語言寫出流暢的風格增強可讀性:
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(type => typeof(BaseTypeName).IsAssignableFrom(type)) .ToArray();
自訂:
以上是LINQ 如何有效率地找出指定基本型別的所有衍生型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!