![](/img/trans.png)
[英]How do I use Reflection to set a Property with a type of List<CustomClass>
[英]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.