1

第一次读取设置(-在设置之前)会引发Object reference not set to an instance of an object.异常。

在实际情况下无法使用DefaultSettingValueAttribute设置默认值,因为它不是我的 int 示例中的简单类型,并且不能描述为字符串。从文档

DefaultSettingValueAttribute 要求可以将默认值表示为字符串。

应该如何避免这种情况?

更多信息:

当然,我可以将它包装在一个try-catch块中,但这应该留给特殊情况,而这是正常的 - 每个第一次使用该应用程序的用户都会遇到这种情况。因为第一次,所以try每次都 ing 似乎是错误的。

那么正确的解决方案是什么?

这是代码:

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;
4

1 回答 1

0

您需要为设置指定默认值。我认为这应该可以防止它被记忆。

如果您无法指定默认值,请在 getter 中检查它是否为空,是否将其初始化为您自己的默认值。

get { 

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

      return (int)(this["MyInt"]); 
    }
于 2013-07-30T19:32:29.780 回答