代码之家  ›  专栏  ›  技术社区  ›  yusuf

关于.Net中DefaultValueAttribute类的用法

  •  1
  • yusuf  · 技术社区  · 16 年前

    下面是简单的代码:

        [System.ComponentModel.DefaultValue(true)]
        public bool AnyValue { get; set; }
    

    我想知道它到底是什么时候变为真的?在编译时?什么时候实例化类?

    你认为我做错了什么?

    3 回复  |  直到 16 年前
        1
  •  10
  •   James Curran    16 年前

    默认值是

    它所做的是告诉VisualStudio默认值是什么。在窗体上选择视觉元素(按钮、列表框等)并显示属性面板时,VS将 大胆的 设置为DefaultValue中给定值以外的值的属性值。

    因此,在您的例子中,由于AnyValue为false,但它的DefaultValue为true,因此将显示is 错误的 在属性面板中以粗体显示。如果要手动将其更改为“true”,则将以非粗体显示。

        2
  •  0
  •   yusuf    16 年前

    那么,像我所说的那样设置默认值的最佳方法是什么呢?

    这对我来说似乎是个好办法;

        private bool myVal = true;
        public bool MyVal
        {
            get { return myVal; } 
            set { myVal = value; }
        }
    
        3
  •  0
  •   Marc Gravell    16 年前

    除了 PropertyGrid , [DefaultValue] 也被各种序列化程序实现使用,例如 XmlSerializer DataContractSerializer . 关于信息,还有第二种模式: bool ShouldSerialize{Name}() 这一点受到所有三方的尊重。