关于.Net中DefaultValueAttribute类的使用

时间:2008-11-06 15:07:31

标签: .net asp.net default-value

所以这是简单的代码:

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

我确信我不会再将AnyValue设置为false(我刚创建它)。此属性是Page class of ASP.NET的属性。而且我在按钮事件处理函数中检查值。但不知何故,它仍然是错误的。 我想知道它实际上是真的吗?在编译时?当类被实例化时?

你怎么看待我做错了什么?

3 个答案:

答案 0 :(得分:10)

DefaultValue执行 NOT 设置值。

它的作用是告诉VisualStudio默认值是什么。当在表单上选择可视元素(按钮,列表框等)并显示“属性”面板时,VS将粗体属性值,这些属性设置为除DefaultValue中给出的值之外的其他值。 / p>

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

答案 1 :(得分:0)

那么设置默认值的最佳方法是什么?

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

    private bool myVal = true;
    public bool MyVal
    {
        get { return myVal; } 
        set { myVal = value; }
    }

答案 2 :(得分:0)

如前所述,它没有设定值。

PropertyGrid之外,[DefaultValue]也会被各种序列化程序实现使用,例如XmlSerializerDataContractSerializer。有关信息,还有第二种模式:bool ShouldSerialize{Name}()受到所有3个人的尊重。