如何设置列表属性的DefaultValue?

时间:2015-01-06 11:42:52

标签: c# .net

我有一个Helper类:

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

    // ....

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

DefaultValue List<string>导致错误:

  

属性参数必须是属性参数类型

的常量表达式,typeof表达式或数组创建表达式

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

Setting实际上是System.Attribute,因为Settings继承了它,这不是我的呼吁,因为它不是我的代码或者可以接受更改。

我的问题是,如何设置DefaultValue到我的媒体资源AcceptList


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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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