2017-03-29 48 views
0

我在保存应用程序设置的应用程序中有一个对象。该对象的实例保存在应用程序的设置中。将自定义对象保存到应用程序设置不起作用

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

在应用程序启动目标被读出,如果空的新实例。之后立即保存。

// 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

当您调用'Save()'时,修改*用户的*设置。虽然你的对象被标记为'ApplicationScopedSetting'。您是否尝试过使用[UserScopedSettingAttribute](https://msdn.microsoft.com/en-us/library/system.configuration.userscopedsettingattribute(v = vs.110).aspx)?这不适用于ASP.NET应用程序,因为它们没有用户配置设置 –

+0

@PanagiotisKanavos是的,使用'UseScopedSettingAttribute'它工作。谢谢 ! –

回答

0

好像你想要序列化基于对象的设置。我会建议使用Newtonsoft Json.NET

Serialize当您想将对象保存到您的设置时,将您的对象转换为JSON字符串。 Deserialize读出设置时,设置字符串为实际对象。

+0

这并不回答这个问题。设置的*内容*无关紧要。 .NET使用复杂的设置对象没有问题 –

相关问题