Настройки приложения .NET -> установка пустой строки - PullRequest
3 голосов
/ 04 июля 2010

Что я должен набрать (в обоих случаях) в разделе applicationSettings моего app.config, чтобы при чтении настроек я мог получить следующее:

  1. Settings.Default.FooString == null
  2. Settings.Default.FooString == string.Empty

? Я полагаю, что невозможно достичь обеих ситуаций, или я что-то упустил?

К сожалению, требуется дифференцировать, является ли строковое значение нулевым или пустым, потому что это значение относится к другой системе, которая принимает разные решения по этим двум. спасибо


дополнительная информация:

Settings.Designer.cs обновляется каждый раз, когда вы изменяете вкладку настроек. Пример сгенерированного значения:

    [global::System.Configuration.UserScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute("")]
    public string Foo {
        get {
            return ((string)(this["Foo "]));
        }
        set {
            this["Foo "] = value;
        }
    }

проблема в сгенерированном [DefaultSettingValueAttribute ("")]. Он работает так, как я хочу, когда я исправляю его вручную с помощью [DefaultSettingValueAttribute (null)], однако мне нужно будет делать это после каждого изменения какой-либо вещи на вкладке настроек, что недопустимо.

какие-нибудь подсказки?

Ответы [ 3 ]

3 голосов
/ 04 июля 2010

Вы правы, невозможно достичь обеих ситуаций, потому что null != String.Empty.

Но вы можете использовать Boolean String.IsNullOrEmpty(String) для проверки обеих ситуаций.

2 голосов
/ 04 июля 2010

Для null вы просто опускаете весь элемент <value />.

Для string.Empty вы используете <value /> или <value></value>.

2 голосов
/ 04 июля 2010

оставьте appSetting неопределенным, если хотите null, используйте value = "", если хотите String.Empty

...