我可以用反射设置属性值吗?

本文关键字:属性 设置 反射 我可以 | 更新日期: 2023-09-27 18:10:49

我知道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
    }
}

如果它不是一个公共属性,你需要在GetProperty调用中指定BindingFlags.NonPublic | BindingFlags.Instance