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

时间:2017-09-29 17:22:39

标签: c# wpf generics application-settings

我正在保存并在我的应用程序设置文件(Settings.settings)中加载各种变量。保存/加载stringsUrisDataTables等变量正常工作

尝试保存/加载自定义对象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;
    }
}    

1 个答案:

答案 0 :(得分:3)

TFS_Extraction.IterationFilter必须是可序列化的。该类必须具有公共默认构造函数。