我在保存应用程序设置的应用程序中有一个对象。该对象的实例保存在应用程序的设置中。将自定义对象保存到应用程序设置不起作用
[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一次。这发生在调试时,以及我尝试启动时未经调试。
我在做什么错?甚至可以将自定义对象保存到设置中?
当您调用'Save()'时,修改*用户的*设置。虽然你的对象被标记为'ApplicationScopedSetting'。您是否尝试过使用[UserScopedSettingAttribute](https://msdn.microsoft.com/en-us/library/system.configuration.userscopedsettingattribute(v = vs.110).aspx)?这不适用于ASP.NET应用程序,因为它们没有用户配置设置 –
@PanagiotisKanavos是的,使用'UseScopedSettingAttribute'它工作。谢谢 ! –