首頁 > 後端開發 > C++ > 如何使用反射從類屬性中提取屬性名稱和值?

如何使用反射從類屬性中提取屬性名稱和值?

Barbara Streisand
發布: 2025-01-29 08:24:17
原創
145 人瀏覽過

How Can I Extract Attribute Names and Values from Class Properties Using Reflection?

使用反射提取屬性名稱和值

反射中一個常見任務是從類的屬性中檢索與屬性關聯的屬性信息。考慮以下示例:

<code class="language-csharp">public class Book
{
    [Author("AuthorName")]
    public string Name
    {
        get; private set; 
    }
}</code>
登入後複製

此處,Author 屬性應用於 Name 屬性。我們的目標是利用反射來獲取屬性名稱和值對(“Author”,“AuthorName”)。

為此,請按照以下步驟操作:

  1. 使用 typeof(Book).GetProperties() 獲取表示類屬性的 PropertyInfo 實例數組。
  2. 對於每個 PropertyInfo,調用 GetCustomAttributes() 來確定是否有任何屬性具有 Author 類型。
  3. 如果存在 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中文網其他相關文章!

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