首頁 >後端開發 >C++ >C# 中如何使用反射動態設定屬性值?

C# 中如何使用反射動態設定屬性值?

DDD
DDD原創
2025-01-04 06:45:40283瀏覽

How Can Reflection Be Used to Dynamically Set Property Values in C#?

利用反射修改屬性值

反射是一個強大的.NET 框架功能,賦予檢查和修改對象及其成員的能力動態地。在這種情況下,我們將探討如何利用反射來設定 C# 類別中特定屬性的值。

考慮一個場景,其中您知道屬性的名稱,例如「first_name」並希望使用該字串修改其值。反射為這個問題提供了一個解決方案。

要達到預期的結果,可以採取以下步驟:

  1. 使用 Type.GetProperty 取得屬性:利用 Type.GetProperty 取得屬性的元資料。如果屬性不是公共的,則可能需要綁定標誌。
  2. 透過 SetValue 設定值: 對檢索到的屬性呼叫 SetValue 方法以指派所需的值。呼叫 SetValue 需要一個物件實例。

提供的程式碼範例舉例說明了此方法:

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,如下所示:

var property = typeof(Person).GetProperty("Name", BindingFlags.NonPublic | BindingFlags.Instance);

借助反射,動態設定屬性值變得可行,為程式碼操作和運行時提供了靈活性行為。

以上是C# 中如何使用反射動態設定屬性值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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