如何设置列表属性的 DefaultValue?

Gua*_*apo 5 .net c#

我有一个 Helper 类:

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

    // ....

    [Setting, DefaultValue(new List<string>())]
    public List<string> AcceptList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是我的DefaultValueforList<string>导致错误:

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

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

Setting实际上System.AttributeSettings从它继承的,这不是我的电话,因为它不是我的代码或对更改开放。

我的问题是,如何DefaultValue为我的财产设置 a AcceptList


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

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

Sel*_*enç 3

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

[Setting, DefaultValue(default(List<string>)]
public List<string> AcceptList { get; set; }
Run Code Online (Sandbox Code Playgroud)

  • 这是**正确的**答案,从我现在的实验来看,它看起来是唯一的选择。 (2认同)