将自定义对象保存到应用程序设置不起作用

时间:2017-03-29 09:39:57

标签: c# .net application-settings

我在应用程序中有一个对象,可以保存此应用程序的设置。该对象的实例保存在应用程序的设置中。

[global::System.Configuration.ApplicationScopedSetting()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public ReportingConfiguration ReportingConfiguration
{
    get { return ((ReportingConfiguration)(this["ReportingConfiguration"])); }
    set { this["ReportingConfiguration"] = value; }
}

在应用程序启动时,会读出该对象,如果它的null new实例化。之后立即保存。

// Get existing ReportingConfiguration or create new if null
var reportingConfiguration = Properties.Settings.Default.ReportingConfiguration;
if (reportingConfiguration == null)
{
    reportingConfiguration = new ReportingConfiguration();
    Properties.Settings.Default.ReportingConfiguration = reportingConfiguration;
    Properties.Settings.Default.Save();
}

当从设置对话框修改设置并应保存时,对象将保存到设置中。

Properties.Settings.Default.ReportingConfiguration = _reportingConfiguration;
Properties.Settings.Default.Save();

但是,当我重新启动应用程序时,读出的对象再次为null。这种情况发生在调试时以及我尝试在没有调试的情况下启动时。

我做错了什么?甚至可以将自定义对象保存到设置中吗?

1 个答案:

答案 0 :(得分:0)

好像你想根据对象序列化你的设置。我建议使用Newtonsoft Json.NET

当您想要将其保存到设置时,将

Serialize您的对象转换为JSON字符串。 Deserialize在读出设置时设置字符串到实际对象。