2016-03-17 4 views
0

Какой способ лучше проверить, равно ли значение конфигурации?проверка нулевых значений в файле конфигурации

if(ConfigurationManager.AppSettings["configValue"]!=null) 
{ 
    var _queue = ConfigurationManager.AppSettings["configValue"] 
} 

или этот способ?

var _queue=ConfigurationManager.AppSettings["configValue"] ?? null; 
+0

Как насчет 'ConfigurationManager.AppSettings [" configValue "]'? – leppie

+0

Почему бы вам не запустить код и не узнать сами. – Servy

+0

Оба способа одинаковы, семантически. Вопрос в том, хотите ли вы, чтобы ваш var был назначен, когда нет значения конфигурации или нет. В обоих случаях требуется нулевая проверка. – Jay

ответ

1

Я использую эти расширения , Это сокращенно. Существует несколько других методов анализа значений для других типов.

Таким образом, я могу быть явным с сообщениями об ошибках, так что если параметр требуется, но отсутствует, он не прерывается молча или бросает неопределенное исключение.

public static class AppSettingsExtensions 
{ 
    public static string Required(this NameValueCollection appSettings, string key) 
    { 
     var settingsValue = appSettings[key]; 
     if (string.IsNullOrEmpty(settingsValue)) 
      throw new MissingAppSettingException(key); 
     return settingsValue; 
    } 

    public static string ValueOrDefault(this NameValueCollection appSettings, string key, string defaultValue) 
    { 
     return appSettings[key] ?? defaultValue; 
    } 
} 

public class MissingAppSettingException : Exception 
{ 
    internal MissingAppSettingException(string key, Type expectedType) 
     : base(string.Format(@"An expected appSettings value with key ""{0}"" and type {1} is missing.", key, expectedType.FullName)) 
    { } 
    public MissingAppSettingException(string key) 
     : base(string.Format(@"An expected appSettings value with key ""{0}"" is missing.", key)) 
    { } 
} 

Использование:

var setting = ConfigurationManager.AppSettings.Required("thisCantBeMissing"); 
    var optionalSetting = ConfigurationManager.AppSettings.ValueOrDefault("thisCanBeMissing", "default value"); 

Второй удобно, потому что я часто не нужно, чтобы создать ключ AppSettings. Я могу просто использовать значение по умолчанию.

1

что-то вдоль этих линий

string val = ConfigurationManager.AppSettings["configValue"]; 
if (val == null) 
    Console.WriteLine("Missing appSettings configuration 'configValue'"); 
else if (val == string.Empty) 
    Console.WriteLine("appSettings configuration 'configValue' not set"); 
else 
    Console.WriteLine("appSettings configuration 'configValue' is " + val); 

Но, как правило, даже если кто-то не установлено значение, вы хотите, чтобы ваше приложение по-прежнему функционировать ...

string val = ConfigurationManager.AppSettings["configValue"]; 
if (string.IsNullOrWhiteSpace(val)) 
    val = "default value"; 
+0

спасибо! Каким будет самый сложный способ выражения вашего второго блока кода? –

+0

@l -'''''''- '' '' '' '' '' '' Я бы предположил, если вы хотите использовать однострочный слой: 'string val = string. IsNullOrWhiteSpace (ConfigurationManager.AppSettings ["configValue"])? «Значение по умолчанию»: ConfigurationManager.AppSettings ["configValue"]; ' –

Смежные вопросы