首页 >后端开发 >C++ >反射能否根据其名称更改 C# 属性的值?

反射能否根据其名称更改 C# 属性的值?

Linda Hamilton
Linda Hamilton原创
2025-01-03 17:31:39265浏览

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

使用反射设置属性值

问题:

在 C# 中使用反射来改变属性值是否可行,假设属性名称是已知?

答案:

当然,反射可以启用此功能。实现方法如下:

  1. 获取属性:利用Type.GetProperty方法获取目标属性。您可能需要指定其他绑定标志以确保可访问性。
  2. 设置值: 对检索到的属性调用 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