高效識別派生類型
在.NET 中,查找給定類型的所有派生類型是運行時操作期間經常遇到的一項有用任務。一種常見的方法涉及迭代載入的程式集中的所有類型並檢查目標類型的可分配性。但是,此方法可能既慢又程式碼混亂。
效能更高、更優雅的解決方案是利用LINQ 的強大功能:
var listOfDerived = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from type in domainAssembly.GetTypes() where typeof(BaseType).IsAssignableFrom(type) select type).ToArray();
此Linq 查詢可有效搜尋所有組件及其類型,僅選擇那些從指定基本類型繼承的類型。
最佳化和附加註意事項
要進一步最佳化效能,請考慮使用domainAssembly.GetExportedTypes() 而不是GetTypes()。這僅檢索公開可見的類型,從而可能減少所需的檢查數量。
此外,請注意 IsAssignableFrom 包含基底類型本身。如有必要,透過新增 && type != typeof(BaseType) 來排除它。若要僅過濾具體類,請包含 && !type.IsAbstract。
結論
透過利用 LINQ 並考慮這些最佳化,尋找派生類型變得高效且簡單任務,顯著提高程式碼的效能和可讀性。
以上是如何在 .NET 中有效率地尋找給定類型的所有衍生型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!