簡體   English   中英

我可以用Reflection設置屬性值嗎?

[英]Can I set a property value with Reflection?

我知道我的C#類中的屬性名稱。 是否可以使用反射來設置此屬性的值?

例如,假設我知道屬性的名稱是string propertyName = "first_name"; 並且存在一個名為first_name的屬性。 我可以用這個字符串設置它嗎?

是的,您可以使用反射 - 只需使用Type.GetProperty獲取它(如果需要,指定綁定標志),然后適當地調用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 GetProperty調用中的BindingFlags.NonPublic | BindingFlags.Instance

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM