0

私のコードのいくつかの場所で、このように app.config から serviceurl が取得されますConfigurationManager.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 に答える