gpt4 book ai didi

c# - 自定义 ConfigurationSection 默认 bool 值

转载 作者:行者123 更新时间:2023-11-30 13:59:01 30 4
gpt4 key购买 nike

我已经创建了一个具有以下属性的自定义配置部分:

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

但是,在上述情况下,ArgumentNullException 会在 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 属性有什么意义呢?

最佳答案

this[UseMediaServerKey] as stringnull 因为该值是 bool 类型,而不是 string。您不必在自定义配置部分进行任何字符串转换:框架会为您处理一切。

将您的代码简化为:

public bool UseMediaServer
{
get { return (bool) this[UseMediaServerKey]; }
set { this[UseMediaServerKey] = value; }
}

你就完成了。如果配置文件中没有,this[UserMediaServerKey] 将返回正确键入的 DefaultValue。如果您不得不更改字符串转换过程,请在配置属性上放置一个 TypeConverterAttribute。但这在这里不是必需的。

关于c# - 自定义 ConfigurationSection 默认 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14480438/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com