2017-09-29 4 views
3

내 응용 프로그램 설정 파일 (Settings.settings)에 다양한 변수를 저장하고로드하고 있습니다. strings, UrisDataTables과 같은 변수 저장 /로드는 이 올바르게 작동합니다.입니다.이 일반 목록이 응용 프로그램 설정에 저장되지 않는 이유는 무엇입니까?

사용자 지정 개체 List<IterationFilter> 저장 /로드를 시도하면 응용 프로그램을 닫았다가 다시 열면 목록이 손실됩니다. List<IterationFilters>IterationFilter이 목록에 추가되어 저장 되었더라도 응용 프로그램이 다시로드 될 때 null이됩니다. : 일반적인 목록을 저장

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

:

A (제대로 작동) 문자열을 저장

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가 직렬화되어야한다. 클래스에는 public 기본 생성자가 있어야합니다.

+1

IterationFilter 클래스 정의 바로 앞에'[Serializable]'을 추가했으나 설정이 여전히 지속되지 않습니다. –

+0

@Kyle Williamson이 기본 생성자를 추가하려고합니다. public IterationFilter() {...} – Kostya

+1

XML 직렬화의 경우 [Serializable] 특성은 다음과 같습니다. 필요 없음 – Kostya

관련 문제