我有一个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("")
设置为空并将我的属性用作字符串,并使用分隔符从字符串来回转换在私有财产中的列表中,我能够保存我需要的数据。
答案 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; }