Исключение класса пользовательских настроек при первом использовании (ApplicationSettingsBase)

Первое чтение настроек (до того, как они были установлены) выдает Object reference not set to an instance of an object. исключение.

Установка значения по умолчанию с помощью DefaultSettingValueAttribute не может быть выполнена в реальном случае, потому что это не простой тип, как в моем примере с int, и его нельзя описать как строку. Из документов:

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

Как этого избежать?

Больше информации:

Конечно, я могу обернуть его в try-catch блокировать, но это следует оставить для исключительных случаев, тогда как это нормальное явление - с этим столкнется каждый пользователь, который будет использовать приложение впервые. А также tryкаждый раз из-за этого первого раза кажется неправильным.

Так каково правильное решение?

Вот код:

public class MySettings : ApplicationSettingsBase
{
    [UserScopedSettingAttribute()]
    public int MyInt
    {
        get { return (int)(this["MyInt"]); } // Object reference not set to an instance of an object.
        set { this["MyInt"] = value; }
    }
}

И называется так:

MySettings s = new MySettings();
int i = s.MyInt;

1 ответ

Решение

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

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

get { 

      if(this["MyInt"] == null)
          this["MyInt"] = 0;

      return (int)(this["MyInt"]); 
    }
Другие вопросы по тегам