私のアプリケーションでは、実行時に app.config の appSetting の値 (「環境」) を変更する必要があります。
AppSettingsReader を使用しています
private static AppSettingsReader _settingReader;
public static AppSettingsReader SettingReader
{
get
{
if (_settingReader == null)
{
_settingReader = new AppSettingsReader();
}
return _settingReader;
}
}
その後、ある段階でこれを行います
config.AppSettings.Settings[AppSettingString.Environment.ToString()].Value = newEnvironment.ToString();
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
しかし、今度は「環境」をこんな風に読んでみる
string environment = (string)SettingReader.GetValue(AppSettingString.Environment.ToString(), typeof(System.String));
私は環境の古い値で終わります。
これを行うことでこれを修正できることに気付きました
_settingReader = new AppSettingsReader();
「環境」を読む前に。
しかし、新しいインスタンスを作成することは適切なアプローチではないと思います。
おそらく、私の SettingReader に、同じインスタンスを使用するように値が変更されたことを知らせる方法がありますが、値は更新されていますか?
(明らかにプロジェクトを壊す質問ではなく、より教育的な質問です)