Как проверить, существует ли ключ appSettings?
Как проверить, доступен ли параметр приложения?
т. е. приложение.конфигурации
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key ="someKey" value="someValue"/>
</appSettings>
</configuration>
и в codefile
if (ConfigurationManager.AppSettings.ContainsKey("someKey"))
{
// Do Something
}else{
// Do Something Else
}
7 ответов:
MSDN: Configuration Manager.AppSettings
if (ConfigurationManager.AppSettings[name] != null) { // Now do your magic.. }
или
string s = ConfigurationManager.AppSettings["myKey"]; if (!String.IsNullOrEmpty(s)) { // Key exists } else { // Key doesn't exist }
if (ConfigurationManager.AppSettings.AllKeys.Contains("myKey")) { // Key exists } else { // Key doesn't exist }
безопасно возвращенное значение по умолчанию через generics и LINQ.
public T ReadAppSetting<T>(string searchKey, T defaultValue) { if (ConfigurationManager.AppSettings.AllKeys.Any(key => key == searchKey)) { try { // see if it can be converted var converter = TypeDescriptor.GetConverter(typeof(T)); if (converter != null) { defaultValue = (T)converter.ConvertFromString(ConfigurationManager.AppSettings.GetValues(searchKey).First()); } } catch { } // nothing to do, just return default } return defaultValue; }
используется следующим образом:
string LogFileName = ReadAppSetting("LogFile","LogFile"); double DefaultWidth = ReadAppSetting("Width",1280.0); double DefaultHeight = ReadAppSetting("Height",1024.0); Color DefaultColor = ReadAppSetting("Color",Colors.Black);
Я думаю, что выражение LINQ может быть лучше:
const string MyKey = "myKey" if (ConfigurationManager.AppSettings.AllKeys.Any(key => key == MyKey)) { // Key exists }
Если ключ, который вы ищете нет в файле config, вы не сможете преобразовать его в строку .ToString () потому что значение будет null, и вы получите ошибку "ССЫЛКА на объект не установлена на экземпляр объекта". Лучше всего сначала посмотреть, существует ли значение, прежде чем пытаться получить строковое представление.
if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["myKey"])) { String myKey = ConfigurationManager.AppSettings["myKey"].ToString(); }
или, как предложил код обезьяны:
if (ConfigurationSettings.AppSettings["myKey"] != null) { // Now do your magic.. }