DefaultValue属性不适用于我的自动属性

Ahm*_*gdy 21 c# attributes properties automatic-properties default-value

我有以下自动属性

[DefaultValue(true)]
public bool RetrieveAllInfo { get; set; }
Run Code Online (Sandbox Code Playgroud)

当我尝试在代码中使用它时我发现默认的false假设是因为我认为这是bool变量的默认值,有没有人知道什么是错的!?

Phi*_*ert 34

DefaultValue属性仅用于告诉Visual Studio设计者(例如在设计表单时)属性的默认值.它不会在代码中设置属性的实际默认值.

更多信息:http://support.microsoft.com/kb/311339

  • 谢谢菲利普,所以我认为唯一的解决方案是从构造函数中解决。谢谢 (2认同)

Mar*_*ell 15

[DefaultValue]仅由(例如)序列化API(如XmlSerializer)和一些UI元素(如PropertyGrid)使用.它没有设置值本身; 你必须使用一个构造函数:

public MyType()
{
    RetrieveAllInfo = true;
}
Run Code Online (Sandbox Code Playgroud)

或手动设置字段,即不使用自动实现的属性:

private bool retrieveAllInfo = true;
[DefaultValue(true)]
public bool RetrieveAllInfo {
    get {return retrieveAllInfo; }
    set {retrieveAllInfo = value; }
}
Run Code Online (Sandbox Code Playgroud)