在我的应用程序中,我需要在运行时更改 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 知道值已更改为使用它的相同实例,但具有刷新的值?
(显然不是一个破坏项目的问题,更像是一个教育问题)