c# change display name attribute runtime

在运行时修改 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; }

结果:「新显示名称」

  •