首頁 > 後端開發 > C++ > 如何使用.NET反射檢索屬性的屬性名稱和值?

如何使用.NET反射檢索屬性的屬性名稱和值?

Susan Sarandon
發布: 2025-01-29 07:48:08
原創
746 人瀏覽過

How to Retrieve Attribute Name and Value for Properties using .NET Reflection?

使用.NET反射獲取屬性名稱和值的技巧

本文探討如何使用.NET反射機制提取屬性的名稱-值對。我們以一個名為Book的類為例,其Name屬性帶有Author特性:

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

問題: 給定一個類型,如何使用反射獲取每個屬性的特性名稱及其關聯的值?

解決方案:

使用反射訪問屬性特性,請按照以下步驟操作:

  1. 使用typeof(Book).GetProperties()獲取一個PropertyInfo實例數組,這些實例代表該類型的全部屬性。
  2. 遍歷每個PropertyInfo,並使用GetCustomAttributes()檢索應用於該屬性的自定義特性數組。
  3. 篩選返回的特性,以識別所需類型的特性(例如,此處的AuthorAttribute)。
  4. 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中文網其他相關文章!

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