我创建了一个具有以下属性的自定义配置部分:
private const string UseMediaServerKey = "useMediaServer";
[ConfigurationProperty(UseMediaServerKey, IsRequired = false, DefaultValue = false)]
public bool UseMediaServer
{
get { return bool.Parse(this[UseMediaServerKey] as string); }
set { this[UseMediaServerKey] = value; }
}
我的理解是,如果配置文件中未定义该属性,DefaultValue
则应返回该属性。
但是,在上述情况下,aArgumentNullException
被抛出bool.Parse(...)
意味着即使未定义配置属性,也会执行默认访问器。
当然,我可以将属性访问器更改为:
private const string UseMediaServerKey = "useMediaServer";
[ConfigurationProperty(UseMediaServerKey, IsRequired = false)]
public bool UseMediaServer
{
get {
bool result;
if (bool.TryParse(this[UseMediaServerKey] as string, out result))
{
return result;
}
return false;
}
set { this[UseMediaServerKey] = value; }
}
但是,DefaultValue
财产的意义何在?