在运行时修改 DisplayName 属性,需要使用反射来获取该属性的引用,并修改它的值。
代码示例:
using System;
using System.ComponentModel;
using System.Reflection;
namespace ConsoleApp1
class Program
static void Main(string[] args)
ExampleClass obj = new ExampleClass();
// 获取ExampleProperty的PropertyDescriptor
PropertyDescriptor propertyDescriptor = TypeDescriptor.GetProperties(obj)["ExampleProperty"];
// 使用反射获取该属性的DisplayNameAttribute
FieldInfo fieldInfo = propertyDescriptor.GetType().GetField("attributeArray", BindingFlags.NonPublic | BindingFlags.Instance);
object[] attributes = (object[])fieldInfo.GetValue(propertyDescriptor);
DisplayNameAttribute displayNameAttribute = (DisplayNameAttribute)attributes[0];
// 修改DisplayNameAttribute的DisplayName值
displayNameAttribute.DisplayName = "新显示名称";
Console.WriteLine(propertyDescriptor.DisplayName);
Console.ReadKey();
public class ExampleClass
[DisplayName("原显示名称")]
public string ExampleProperty { get; set; }
结果:「新显示名称」