使用.NET反射獲取屬性名稱和值的技巧
本文探討如何使用.NET反射機制提取屬性的名稱-值對。我們以一個名為Book
的類為例,其Name
屬性帶有Author
特性:
<code class="language-csharp">public class Book { [Author("AuthorName")] public string Name { get; private set; } }</code>
問題: 給定一個類型,如何使用反射獲取每個屬性的特性名稱及其關聯的值?
解決方案:
使用反射訪問屬性特性,請按照以下步驟操作:
typeof(Book).GetProperties()
獲取一個PropertyInfo
實例數組,這些實例代表該類型的全部屬性。 PropertyInfo
,並使用GetCustomAttributes()
檢索應用於該屬性的自定義特性數組。 AuthorAttribute
)。 PropertyInfo
實例獲取屬性名稱,並從已識別的特性獲取特性值。 以下示例實現創建一個字典,將屬性名稱映射到其關聯的作者名稱:
<code class="language-csharp">public static Dictionary<string, string> GetAuthors() { var _dict = new Dictionary<string, string>(); var props = typeof(Book).GetProperties(); foreach (var prop in props) { var attrs = prop.GetCustomAttributes(true); foreach (var attr in attrs) { var authAttr = attr as AuthorAttribute; if (authAttr != null) { var propName = prop.Name; var auth = authAttr.Name; _dict.Add(propName, auth); } } } return _dict; }</code>
通過利用反射,我們可以動態地檢查屬性並提取自定義特性數據,從而深入了解與代碼關聯的元數據。
以上是如何使用.NET反射檢索屬性的屬性名稱和值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!