首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >DefaultValue属性不适用于我的自动属性

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

Stack Overflow用户
提问于 2009-12-30 22:41:54
回答 3查看 20K关注 0票数 23

我有以下Auto属性

[DefaultValue(true)]
public bool RetrieveAllInfo { get; set; }

当我试图在代码中使用它时,我发现false的缺省值为false,我假设这是bool变量的缺省值,有人知道出了什么问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-30 22:45:34

DefaultValue属性仅用于告诉Visual Studio设计器(例如,在设计窗体时)属性的默认值是什么。它不会在代码中设置属性的实际默认值。

更多信息请点击此处:http://support.microsoft.com/kb/311339

票数 38
EN

Stack Overflow用户

发布于 2009-12-30 22:46:59

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

public MyType()
{
    RetrieveAllInfo = true;
}

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

private bool retrieveAllInfo = true;
[DefaultValue(true)]
public bool RetrieveAllInfo {
    get {return retrieveAllInfo; }
    set {retrieveAllInfo = value; }
}

或者,使用更新的C#版本(C# 6或更高版本):

[DefaultValue(true)]
public bool RetrieveAllInfo { get; set; } = true;
票数 17
EN

Stack Overflow用户

发布于 2013-06-21 18:20:38

针对这一点的一种攻击是在this链接上。

简而言之,在构造函数的末尾调用此函数。

static public void ApplyDefaultValues(object self)
   {
        foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(self)) {
            DefaultValueAttribute attr = prop.Attributes[typeof(DefaultValueAttribute)] as DefaultValueAttribute;
            if (attr == null) continue;
            prop.SetValue(self, attr.Value);
        }
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1980520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档