2017-02-02 5 views
1

При запуске моего приложения мне нужно убедиться, что пользовательские настройки завершены до того, как пользователю разрешено выбрать кнопку «Запустить», чтобы запустить функциональный поток. У меня есть класс Init.cs, который выполняет различные проверки, чтобы убедиться, что среда настроена правильно, чтобы предотвратить появление общих ошибок при запуске. Большинство этих проверок работают нормально, за исключением следующих:C# check Settings.Default при запуске

 static void checkConfigHealth() 
    { 
     Console.WriteLine("Checking Config"); 
     Settings.Default["nullVal"] = false; 
     Console.WriteLine(Settings.Default["Email"]); //Test code 
     if (Settings.Default["Email"] == null) 
     { 
      Settings.Default["nullVal"] = true; 
     } 
     if (Settings.Default["SQL"] == null) 
     { 
      Settings.Default["nullVal"] = true; 
     } 
     if (Settings.Default["Server"] == null) 
     { 
      Settings.Default["nullVal"] = true; 
     } 
     if (Settings.Default["User"] == null) 
     { 
      Settings.Default["nullVal"] = true; 
     } 
     bool nullVal = Convert.ToBoolean(Settings.Default["nullVal"]); 
     if (nullVal) 
     { 
      Console.WriteLine("Please update the configuartion!"); 
     } 
     Console.WriteLine(Settings.Default["nullVal"]); //Test code 
    } 

Продолжение, но это основная идея. Когда этот метод вызывается при запуске, я получаю ответы от тестового кода (при условии, что значения settings.default пусты):

«Проверка конфигурации»

// Я получаю пустой здесь, где запись «электронная почта» будет идти (это правильно, потому что я оставил это поле пустым, специально для тестирования)

Ложный

// Говоря, что bool nullVal является ложным (это должно сказать правду)

Мои настройки являются emtpy. По моим тестовых ответов, метод вызывается правильно и значения settings.default пусты, но это не вызывает:

if(Settings.Default["Email"] == null) 

Если я обновил настройки конфигурации и не вводить ничего после того, как приложение запущено, а затем нажмите моя кнопка Run, эти проверки снова запускаются, и они работают нормально. Они просто не работают при запуске. Он действует так, как будто там что-то есть (я принимаю '/ 0'?)

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

+0

К claify: Цель этой проверки установить «nullVal» на «True», если пользователь не имеет обновил настройку (т.е. когда пользователь запускает программу в первый раз или обновляет настройки и оставляет поле). В основной форме, когда пользователь выбирает «Выполнить», приложение смотрит на «nullVal», если оно «True», то следующий поток не запускается, но вместо этого пользователь получает ответ на обновление конфигурации. –

ответ

0

Значение по умолчанию для строки в настройках - это пустая строка, а не ноль. Попробуйте изменить условие следующее:

if(string.IsNullOrEmpty(Settings.Default["Email"]) 

вместо:

if(Settings.Default["Email"] == null) 
+0

Сладкий! Благодарю. Я должен был сделать одно изменение. if(string.IsNullorEmpty(Settings.Default.Email)) Чтобы получить от него значение строки. Я был так близок, но пока. Еще раз спасибо. –