Это метод, который позволяет изменять записи в <AppSettings>
:
internal static bool SetSetting(string Key, string Value)
{
bool result = false;
try
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
config.AppSettings.Settings.Remove(Key);
var kvElem= new KeyValueConfigurationElement(Key, Value);
config.AppSettings.Settings.Add(kvElem);
// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified);
// Force a reload of a changed section.
ConfigurationManager.RefreshSection("appSettings");
result = true;
}
finally
{ }
return result;
} // function
Примечание , которое, как я обнаружил, необходимо обновитьраздел appSettings
после обновления.
Функция удаляет ключ перед добавлением, чтобы избежать двойных записей.Это работает также, если ключ ранее не существовал.Если возникает какая-либо ошибка, возвращается false , в случае успеха true .Метод чтения настроек тривиален и приведен для полноты:
internal static string GetSetting(string Key)
{
string result = null;
try
{
result = ConfigurationManager.AppSettings[Key];
}
finally
{ }
return result;
} // function
Обратите внимание , что я окружил его блоком try ... finally , чтобыподавить ошибки.Если возникают какие-либо ошибки, тогда GetSetting просто возвращает ноль, а SetSetting возвращает false.Это облегчает обработку, однако, если вам требуются исключения, вы все равно можете добавить
catch (Exception) { throw; }
, чтобы вызвать исключение до вызывающей стороны.Или для отладки вы можете добавить:
#if DEBUG
catch (Exception ex) {
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
#endif
, который будет отображать исключение в окне Вывод Visual Studio, если вы выбрали конфигурацию «Отладка», но продолжите скод.
Примечание (перекрестная ссылка на похожую тему):
Раздел applicationSettings отличается, поскольку он различает область действия «Пользователь» и «Приложение» и поддерживает разные типы данных, а не только строки.Если вы хотите узнать, как вы можете обрабатывать applicationSettings , вы можете найти его здесь (в stackoverflow): Как получить доступ к applicationSettings
Если вы не уверены, следует ли использовать AppSettings
или applicationSettings
, тогда прочитайте это , прежде чем принять решение.
Если вы столкнулись с предупреждением 'ConfigurationSettings.AppSettings' is obsolete
, тогда эта подсказкамогу вам помочь.