在 .NET 反射世界中,檢索帶有特定屬性的屬性清單可能是經常需要的。目前的問題涉及識別帶有 MyAttribute 屬性的屬性,其中 AllowMultiple 設定為 false。
提出的初始方法使用 t.GetProperties() 迭代所有屬性,然後循環檢查每個屬性的屬性與 prop.GetCustomAttributes(typeof(MyAttribute), true)。雖然此方法有效,但它涉及創建多個屬性實例,這可能效率低。
這是一個改進的解決方案,它利用LINQ 中的Where 擴充方法:
var props = t.GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
此方法簡化了屬性透過直接呼叫每個屬性的Attribute.IsDefined 來檢查過程,這可以有效地驗證所需屬性的存在而無需實例化它。這顯著提高了效能,特別是對於具有大量屬性的類型。
此外,產生的 props 變數是 PropertyInfo 物件的 IEnumerable,允許根據需要進一步過濾或操作。
以上是如何有效率地找出用特定屬性修飾的 C# 屬性 (AllowMultiple = false)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!