Dans mon application, j'ai besoin de changer une valeur ("Environnement") dans appSetting de app.config à l'exécution.C# AppSettingsReader: "relit" les valeurs dans AppSettingsReader (runtime)?
J'utilise AppSettingsReader
private static AppSettingsReader _settingReader;
public static AppSettingsReader SettingReader
{
get
{
if (_settingReader == null)
{
_settingReader = new AppSettingsReader();
}
return _settingReader;
}
}
Puis à un moment donné, je le fais
config.AppSettings.Settings[AppSettingString.Environment.ToString()].Value = newEnvironment.ToString();
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
Cependant, la prochaine fois que j'essaie de lire "Environnement" comme celui-ci
string environment = (string)SettingReader.GetValue(AppSettingString.Environment.ToString(), typeof(System.String));
Je finis avec l'ancienne valeur de l'environnement.
je remarquai que je peux résoudre ce problème en faisant
_settingReader = new AppSettingsReader();
avant d'avoir lu « Environnement ».
Mais je pense que la création d'une nouvelle instance n'est pas la bonne approche.
Peut-être y a-t-il un moyen de faire savoir à mon SettingReader que les valeurs ont changé pour utiliser la même instance, mais avec des valeurs rafraîchies?
(pas un projet révolutionnaire question évidemment, plus d'un ordre éducatif)