首頁 >後端開發 >C++ >反射能否根據其名稱更改 C# 屬性的值?

反射能否根據其名稱更改 C# 屬性的值?

Linda Hamilton
Linda Hamilton原創
2025-01-03 17:31:39207瀏覽

Can Reflection Change a C# Property's Value Given its Name?

使用反射設定屬性值

問題:

在C# 中使用反射來改變屬性值是否可行,假設🎜>

在C# 中使用反射來改變屬性值是否可行,假設屬性名稱是已知?

答案:

當然,反射可以啟用此功能。實作方法如下:
  1. 取得屬性:
  2. 利用Type.GetProperty方法取得目標屬性。您可能需要指定其他綁定標誌以確保可訪問性。
  3. 設定值:
  4. 對檢索到的屬性呼叫 SetValue 方法。以下是一個程式碼範例來說明:
using System;

class Person
{
    public string Name { get; set; }
}

class Test
{
    static void Main(string[] arg)
    {
        Person p = new Person();
        var property = typeof(Person).GetProperty("Name");
        property.SetValue(p, "Jon", null);
        Console.WriteLine(p.Name); // Jon
    }
}

注意:

如果目標屬性是非公共的,則需要使用 BindingFlags.NonPublic |取得屬性時的 BindingFlags.Instance。

以上是反射能否根據其名稱更改 C# 屬性的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn