Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设置列表属性的DefaultValue?_C#_.net - Fatal编程技术网

C# 如何设置列表属性的DefaultValue?

C# 如何设置列表属性的DefaultValue?,c#,.net,C#,.net,我有一个助手类: class Helper : Settings { [Setting, DefaultValue(false)] public bool DeclineData { get; set; } // .... [Setting, DefaultValue(new List<string>())] public List<string> AcceptList { get; set; } } 类帮助器:设置 { [设

我有一个助手类:

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

    // ....

    [Setting, DefaultValue(new List<string>())]
    public List<string> AcceptList { get; set; }
}
类帮助器:设置
{
[设置,默认值(false)]
公共bool DeclineData{get;set;}
// ....
[设置,默认值(新列表())]
公共列表接受列表{get;set;}
}
但是,我的
List
DefaultValue
会导致错误:

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

我还尝试了
typeof(List)
,但也失败了

设置
实际上是
系统。属性
作为
设置
继承自它,这不是我的调用,因为它不是我的代码,也无法更改

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


虽然Selman22 answer不会生成设置默认值的直接错误,但它不会让它序列化或反序列化数据,而且由于我对这个模糊API的信息非常有限,所以我采用了不同的方法


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

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

class Helper : Settings
{
    public Helper()
    {
       DeclineData = false;
       AcceptList = new List<string>();
    }
    public bool DeclineData { get; set; }
    public List<string> AcceptList { get; set; }
}
类帮助器:设置
{
公共助理()
{
DeclineData=false;
AcceptList=新列表();
}
公共bool DeclineData{get;set;}
公共列表接受列表{get;set;}
}

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

[设置,默认值(默认值(列表)]
公共列表接受列表{get;set;}

不,我不能这样设置,或者从设置继承的序列化也不会保存设置。您在问题中没有提到任何关于序列化的内容。您能详细说明为什么它不起作用吗?我很乐意,但代码对我不开放。我可以看到使用VS的代码很少,其余的是加密的/prote这是一个API非常有限的应用程序,几乎没有任何文档。虽然selman22为您提出的问题提供了正确的答案,但您现在面临一个更大的问题。您可能应该发布一个新问题,说明如何在序列化属性之前为属性指定特定值。请记住包括所有相关信息。@gideon我自己也迷路了这个应用程序有一个非常有限的API,而且没有很好的文档记录,老实说,我在试图弄清楚它的时候很迷茫。这是正确的答案,从我现在的实验来看,它似乎是唯一的选择。因为它将属性初始化为null,所以使用它毫无意义,因为它无论如何都是null是的,但是如果你一般地看这个问题(或者当你遇到编译错误时我有什么选择),这就是正确的答案。如果人们在OPs帖子中搜索错误,这个答案会给出正确的信息。@Selman22 I get
Setting AcceptList has invalid value“System.Collections.Generic.List`1[System.String]“!
并将其另存为
System.Collections.Generic.List`1[System.String]
@Guapo这可能是因为null不是它应该的值。就像我在另一条评论中发布的一样。你现在的问题不是你在问题中所描述的问题。你现在的陈述是:如何设置属性值并将其序列化
[Setting, DefaultValue(default(List<string>)]
public List<string> AcceptList { get; set; }