如标题描述.我先进System.ComponentModel
using System;
namespace System.ComponentModel
{
    public class DisplayNameAttribute : Attribute
    {
        public virtual string DisplayName { get; }
    }
}
跟进去看了一下,DisplayName只有GET,没有SET,所以不知道如何重写,请高手赐教.
是不是这里压根就用不着?

解决方案 »

  1.   

    没看到是virtual方法吗?
    继承一下,override掉,返回自己的值,标记特性的时候用自己的类
      

  2.   

    不好意思,我是菜鸟.
    我override,只能覆盖GET,没办法SET,因为VIRTUAL没有提供SET
    如何解决呢?
    谢谢
      

  3.   

    lz的思路有问题。
    这里你可以用Get重写自己的逻辑了,为什么要Set,对于Attribute有了Set有什么用呢?Attribute是元数据,写死在Assembly内!就算有了Set,谁去调用?
      

  4.   

     [Category("报表配置属性"), DisplayName("一、精炼石油产品")]
            public ArrayValue[] Members1
            {
                get
                {
                    return _Members1;
                }
                set
                {
                    _Members1 = value;
                }
            }
    就是我如何修改这个DISPLAYNAME里面的值.
    请教大家,谢谢
      

  5.   

    public class MyDisplayNameAttribute : DisplayNameAttribute
    {
      public override string DisplayName
      {
        get { return DisplayNameDictionary.GetDisplayName(base.DisplayName); }
      }
    }public static class DisplayNameDictionary
    {
      public static string GetDisplayName(string key)
      {
        //...
      }
      public static void SetDisplayName(string key, string displayName)
      {
        //...
      }
    }
    这样还不理解的话,我就放弃了。
      

  6.   

    还有一个问题想请教,不知道您是否可以给一些指导:
    在我的DISPLAYNAME右边总是显示:"ArrayValue[] Array",根据您看到的上面的代码如9楼所写.如何把这个显示变成我想要的,比如:"请您在此点击修改".
    十分感谢