2009-06-27 12 views
4

私はアプリケーション設定でキーと値のペアを格納する方法を探しています。私が見つけたことから、キーと値のペアの辞書は直列化できないため、アプリケーションの設定に保存することはできません。VB.Netアプリケーション設定のWPFキー値ペアの辞書

現在、私はアプリケーションを再起動してからすべての設定がなくなるまで、あらゆる種類の辞書とコレクションを試してみましたが、それらはすべて機能しています。

どこかListDictionaryがシリアライズ可能であることを読んでいますが、まだそれを動作させることができませんでした。誰かが私にアプリケーション設定を使ってこれを動作させる方法のVB.netの例をいくつか教えていただけたら、それは素晴らしいことです!

ありがとうございます!

答えて

2

Dictionary(Of TKey、TValue)クラスは、実際にはシリアライズ可能ですが、バイナリの意味です。残念ながら、XmlSerializationエンジンはIDictionaryを実装するものを処理することができず、それがアプリケーション設定での作業を妨げています。

通常これを回避するには、XmlSerializableでKey/Valueのペアを表す小さなクラスを作成します。私はそれらのキーと値のペアのコレクションをシリアライズすると思います。それは後でDictionary(Of TKey、TValue)に簡単に変換可能です。

2つの項目は名前と学生

Public Class Pair 
    ' Actual property implementation omited for brevity 
    Public Property Student As Student 
    Public Property Name As String 
End Class 

た場合たとえば、その後、私はどのようにその使用に配列し、辞書

Public Function ToArray(map As Dictionary(Of Name,Student)) As Pair() 
    Return map.Select(Function(x) New Pair(x.Key,x.Value).ToArray() 
End Function 

Public Function ToMap(arr As Pair()) As Dictionary(Of Name, Student) 
    return arr.ToDictionary(Function(x) x.Name, Function(y) y.Student) 
End Function 
+1

の間で前後に変換するには、以下を使用します設定としてのクラス?私はこれをできるだけ簡単にしたいと思っていますし、すべての(de /)シリアライズが自動的に行えるのであれば好きですし、My.Settings.Pair.Item( "key")を呼び出してその値を呼び出すだけです。私はこれを行うことができる方法はありますか? – DanO

+0

値を返す既定のプロパティを作成します。 – Shimmy

2

StringCollectionを使用し、「name1 = value1; name2 = value2; ...; namen = valuen」を格納し、それを解析するか、またはConfigurationSection classを使用して独自のセクションを作成できます。また、設定を保存してデータを保持するようにしてください。 :) Check out this、ちょうどの場合。

関連する問題