You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在静态类中正确处理appSettings的布尔值配置异常?

配置驱动的日志开关静态属性实现

我正在开发一个用于判断是否记录日志的静态类,最初的实现很简单:

public static bool ShouldLog { get; set; } = true;

之后我想改用应用配置来控制这个值,于是改成:

public static bool ShouldLog { get; set; } = 
  ConfigurationManager.AppSettings["ShouldLog"];

但这段代码无法运行,因为ConfigurationManager.AppSettings[]返回的是字符串类型,必须先解析。

于是我调整为:

public static bool ShouldLog { get; set; } =
  Boolean.Parse(ConfigurationManager.AppSettings["ShouldLog"]);

但新问题来了:如果application.config里没配置这个条目,会抛出NullReferenceException异常。我又改成了下面的写法:

public static bool ShouldLog { get; set; } =
  ConfigurationManager.AppSettings["ShouldLog"] == null ? false :
    Boolean.Parse(ConfigurationManager.AppSettings["ShouldLog"]);

可一旦配置项填了无效内容,又会抛出TypeInitializationException异常。我接着尝试:

public static bool ShouldLog { get; set; } = 
  ConfigurationManager.AppSettings["ShouldLog"] == null ? false : 
    Boolean.TryParse(ConfigurationManager.AppSettings["ShouldLog"]);

这段代码还是跑不起来,因为Boolean.TryParse的签名不是result = TryParse(),而是TryParse(..., out result),到这里我卡壳了。

我希望能写出这样的代码:

bool ShouldLog = ...(ConfigurationManager.AppSettings["ShouldLog"]);

期望结果

  • 当application.config中的条目为TRUE或FALSE时(最好支持大小写不敏感),返回对应的true或false。
  • 当application.config中的条目为其他内容时,返回false。
  • 当application.config中不存在该条目时,返回false。

内容的提问来源于stack exchange,提问作者Dominique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:47:24