2017-09-29 38 views
3

我正在保存和加載我的應用程序設置文件(Settings.settings)中的各種變量。保存/加載變量,如strings,UrisDataTables正常工作爲什麼這個通用列表沒有被保存在應用程序設置中?

嘗試保存/加載自定義對象List<IterationFilter>時,應用程序關閉並重新打開時,列表將丟失。 List<IterationFilters>在重新加載應用程序時變爲null ...即使已將IterationFilter添加到列表並保存。

保存字符串(正常工作):

Properties.Settings.Default.ConnectionString = connectionString; 
Properties.Settings.Default.Save(); 

保存泛型列表:

Properties.Settings.Default.FilterList.Add(newFilter); 
Properties.Settings.Default.Save(); 

我跟着this answer,創建我的列表設置。我.settings文件是這樣的:

enter image description here

[global::System.Configuration.UserScopedSettingAttribute()] 
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
public System.Collections.Generic.List<TFS_Extraction.IterationFilter> FilterList { 
    get { 
     return ((System.Collections.Generic.List<TFS_Extraction.IterationFilter>)(this["FilterList"])); 
     } 
    set { 
     this["FilterList"] = value; 
     } 
} 

我IterationFilter類:

namespace TFS_Extraction 
{ 
[Serializable] 
public class IterationFilter 
{ 
    public string Operator { get; set; } 
    public string Value { get; set; } 


    public IterationFilter(string _operator, string _value) 
    { 
     Operator = _operator; 
     Value = _value; 
    } 
}  
+0

@Crowcoder我應該清楚,我的所有設置和作用域爲「用戶」。 –

+2

IterationFilter類以任何方式可序列化?例如它是用SettingsSerializeAs屬性標記的嗎?我加 – Ralf

回答

3

TFS_Extraction.IterationFilter必須是序列化的。該類需要有一個公共的默認構造函數。

+1

'[Serializable接口]'直接我IterationFilter類定義之前,但設置仍然沒有被堅持 –

+0

@Kyle威廉姆森嘗試添加默認的構造函數公共IterationFilter(){...} – Kostya

+1

對於XML序列化[Serializable]屬性是不需要 – Kostya

相關問題