使用反射檢索屬性值
假設我們有一個類,其屬性帶有元數據,我們希望通過反射檢索屬性名稱和值。例如,該類有一個名為Name
的屬性,並關聯了一個Author
屬性。
我們可以使用typeof(Book).GetProperties()
來檢索Book
類的屬性信息。對於每個屬性,我們使用GetCustomAttributes()
來檢查與所需類型(例如Author
屬性)匹配的屬性。
一旦找到Author
屬性,我們就可以從PropertyInfo
實例中獲取屬性名稱,並從屬性本身獲取屬性值。 以下代碼實現掃描類型、識別帶有Author
屬性的屬性,並生成包含屬性詳細信息的字典:
<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>
此方法能夠在運行時檢索具有特定屬性的屬性的屬性名稱和值。
以上是如何使用C#中的反射檢索屬性屬性和值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!