使用反射提取屬性名稱和值
反射中一個常見任務是從類的屬性中檢索與屬性關聯的屬性信息。考慮以下示例:
<code class="language-csharp">public class Book { [Author("AuthorName")] public string Name { get; private set; } }</code>
此處,Author
屬性應用於 Name
屬性。我們的目標是利用反射來獲取屬性名稱和值對(“Author”,“AuthorName”)。
為此,請按照以下步驟操作:
typeof(Book).GetProperties()
獲取表示類屬性的 PropertyInfo
實例數組。 PropertyInfo
,調用 GetCustomAttributes()
來確定是否有任何屬性具有 Author
類型。 Author
屬性,則從 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>
通過調用此函數,您可以獲得一個將屬性名稱映射到作者名稱的字典,從而提供與屬性關聯的屬性信息的完整列表。
以上是如何使用反射從類屬性中提取屬性名稱和值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!