首次使用时自定义设置类异常(ApplicationSettingsBase)

时间:2013-07-30 19:29:07

标签: c# .net application-settings applicationsettingsbase

首次阅读“设置”(在设置之前)会引发Object reference not set to an instance of an object.例外。

使用DefaultSettingValueAttribute设置默认值无法在实际情况下完成,因为它不是像我的int示例中的简单类型,并且不能被描述为字符串。来自the docs

  

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 个答案:

答案 0 :(得分:0)

您需要为设置指定默认值。我认为应该防止记忆。

如果你不能指定默认值,请在getter中检查它是否为null,如果它是初始化为你自己的默认值。

get { 

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

      return (int)(this["MyInt"]); 
    }