首頁 > 後端開發 > C++ > 如何在 .NET 中高效檢索具有自訂屬性的屬性?

如何在 .NET 中高效檢索具有自訂屬性的屬性?

Susan Sarandon
發布: 2024-12-27 04:42:25
原創
154 人瀏覽過

How Can I Efficiently Retrieve Properties with Custom Attributes in .NET?

使用自訂屬性來擷取屬性:一種有效的方法

在.NET 中使用反射時,通常需要內省類型及其成員存取特定資訊。常見場景涉及取得標有特定自訂屬性的屬性清單。此任務可以使用 GetCustomAttributes() 方法來完成,但有更有效率、更簡潔的方法。

考慮以下程式碼片段,其旨在使用 MyAttribute 屬性檢索屬性:

foreach (PropertyInfo prop in t.GetProperties())
{
    object[] attributes = prop.GetCustomAttributes(typeof(MyAttribute), true);
    if (attributes.Length == 1)
    {
         //Property with my custom attribute
    }
}
登入後複製

雖然這種方法可以正確運行,但它會遭受不必要的物件實例化。 GetCustomAttributes() 方法傳回一個屬性實例數組,這需要額外的記憶體分配和開銷。

要最佳化此程式碼,我們可以利用Where() 方法和Attribute.IsDefined() 方法,如下所示下面:

var props = t.GetProperties().Where(
                prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
登入後複製

此修改後的程式碼片段透過使用Attribute. IsDefined() 驗證屬性是否存在而無需實例化屬性對象,從而顯著提高了效率。 Where() 方法過濾屬性集合,僅傳回滿足指定謂詞的屬性。

這種方法不僅簡化了程式碼,還透過避免不必要的物件建立來最大限度地減少記憶體消耗。它為檢索標有自訂屬性的屬性提供了更有效率、更優雅的解決方案。

以上是如何在 .NET 中高效檢索具有自訂屬性的屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板