2017-09-29 7 views
3

私はアプリケーション設定ファイル(Settings.settings)にさまざまな変数を保存してロードしています。 strings,UrisDataTablesなどの変数の保存/読み込みは、が正しく動作します。です。この汎用リストがアプリケーション設定に保存されないのはなぜですか?

カスタムオブジェクトList<IterationFilter>を保存/ロードしようとすると、アプリケーションを閉じて再度開くと、リストが失われます。 List<IterationFilters>IterationFilterがリストに追加されて保存されていても、アプリケーションがリロードされるとnullになります。

保存(正しく動作)文字列:ジェネリックリストを保存

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

IterationFilterクラス定義の直前に '[Serializable]'を追加しましたが、設定はまだ保持されていません –

+0

@Kyle Williamsonはデフォルトのコンストラクタpublic IterationFilter(){...}を追加しようとしています – Kostya

+1

XMLシリアル化[Serializable]不要である – Kostya

関連する問題