我在应用程序中有一个对象,可以保存此应用程序的设置。该对象的实例保存在应用程序的设置中。
[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。这种情况发生在调试时以及我尝试在没有调试的情况下启动时。
我做错了什么?甚至可以将自定义对象保存到设置中吗?
答案 0 :(得分:0)
好像你想根据对象序列化你的设置。我建议使用Newtonsoft Json.NET。
当您想要将其保存到设置时,将Serialize您的对象转换为JSON字符串。 Deserialize在读出设置时设置字符串到实际对象。