2017-03-29 76 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使用複雜的設置對象沒有問題 –

相關問題