繁体   English   中英

如何设置列表属性的DefaultValue?

[英]How do I set a DefaultValue of a list property?

我有一个Helper类:

class Helper : Settings
{
    [Setting, DefaultValue(false)]
    public bool DeclineData { get; set; }

    // ....

    [Setting, DefaultValue(new List<string>())]
    public List<string> AcceptList { get; set; }
}

但是我对List<string> DefaultValue导致错误:

属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式

我也尝试过typeof(List<string>)也失败了。

Setting实际上是System.Attribute因为Settings继承了它,这不是我的调用,因为它不是我的代码或对更改开放。

我的问题是, 如何将DefaultValue设置为我的属性AcceptList


虽然Selman22的答案不会产生直接错误来设置默认值,但它不会让它序列化或反序列化数据,因为我对这个obfuscatated API的信息非常有限,我遵循不同的路由。

这不是一个直接的解决方案,而是一个解决方法,直到我找到有关此API的更多信息,方法是将我的DefaultValue("")为空,并将我的属性用作带分隔符的字符串,以便从字符串转换为列表在私有财产中,我能够保存我需要的数据。

您可以在构造函数中设置属性的默认值。

class Helper : Settings
{
    public Helper()
    {
       DeclineData = false;
       AcceptList = new List<string>();
    }
    public bool DeclineData { get; set; }
    public List<string> AcceptList { get; set; }
}

由于它必须是编译时常量,因此只能将其设置为null

[Setting, DefaultValue(default(List<string>)]
public List<string> AcceptList { get; set; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM