我在保存應用程序設置的應用程序中有一個對象。該對象的實例保存在應用程序的設置中。將自定義對象保存到應用程序設置不起作用
[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'它工作。謝謝 ! –