0

我的代码中的几个地方,像这样从 app.config 中检索 serviceurlConfigurationManager.AppSettings["ServerURL"];

现在我想让用户可以将服务 url 指定为命令行参数。如果未指定参数,则必须使用 app.config 中的 serviceurl。

在 Main 我可以执行以下操作:

if(args[0] != null)
ConfigurationManager.AppSettings["ServerURL"] = args[0]

它似乎有效,但我可以依赖 AppSettings["ServerURL"] 不是从 app.config 重新加载的吗?我知道 ConfigurationManager.RefreshSection 但它没有被使用。

4

1 回答 1

2

AppSettings您应该拥有另一个包装ConfigurationManager并提供值替换逻辑的类,而不是从代码中更改值:

public static class Conf {
    public static string ServerURLOverride { get; set; }

    public static string ServerUrl {
        get { return ServerURLOverride ?? ConfigurationManager.AppSettings["ServerURL"]; }
    }
}

并在Main()

if (args.Length > 0 && args[0] != null)
    Conf.ServerURLOverride = args[0];

这也将简化单元测试。

于 2012-09-27T07:52:43.307 回答