为什么这个通用列表没有被保存在应用程序设置中?

问题描述:

我正在保存和加载我的应用程序设置文件(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

TFS_Extraction.IterationFilter必须是序列化的。该类需要有一个公共的默认构造函数。

+1

'[Serializable接口]'直接我IterationFilter类定义之前,但设置仍然没有被坚持 –

+0

@Kyle威廉姆森尝试添加默认的构造函数公共IterationFilter(){...} – Kostya

+1

对于XML序列化[Serializable]属性是不需要 – Kostya