IDictionaryを実装するオブジェクトをシリアル化する創造的な方法を知っている人はいますか? ...新しいクラスを実装せずに?IDictionary
4
A
答えて
11
IDictionary
を実装するクラスは、シリアライズ(Dictionary<K,V>
など)K
とV
ある場合は、その後、標準の.NETシリアル化メカニズムが動作する必要がシリアライズされています。
IDictionary
を実装するクラスは直列化可能ですが、K
とV
は、あなたが個別にキーと関連する値をシリアル化するために2つの配列を使用することができている場合:
// before serialization
IDictionary<string,int> dict;
string[] keys = dict.Keys.ToArray();
int[] values = dict.Keys.Select(key => dict[key]).ToArray();
// after deserialization
IDictionary<string,int> dict = new Dictionary<string,int>();
for (int i = 0; i < keys.Length; i++)
dict.Add(keys[i], values[i]);
1
私はあなたがいた辞書をシリアル化する必要がある意味それを取りますクラスの一部にはコントロールがありませんか?
つまり、キーと値を別々にシリアル化する必要があります。デシリアライズするには、キー/値配列内の各項目をステップして辞書に追加し直します。
0
あなたがDeserialize
とSerialize
を行うだろうと同じようReadObject
とWriteObject
で、System.Runtime.Serialization.DataContractSerializer
を使用することができます。 それは魅力のように機能します。
+0
インラインでシリアライズ/デシリアライズしますか?つまり、主なシリアル化はxmlですが、問題の原因となっているIDictionaryプロパティだけを注入できますか? – toddmo
関連する問題
- 1. C#のCircularBuffer IDictionary?
- 2. NHibernateは2.0:IDictionaryの
- 3. IDictionaryインターフェイスの目的
- 4. 内の辞書IDictionary MVC
- 5. IDictionaryを保存するNHibernate:TransientObjectException
- 6. 反復たIDictionary/Dictionaryオブジェクト
- 7. ConcurrentDictionaryからIDictionaryへキャスト
- 8. IDictionaryの柔軟な使用
- 9. NHibernate 3.2 IDictionaryによるマッピング
- 10. IDictionaryテーブルに表示されるクラスC#
- 11. WCFでIDictionary <string、object>をシリアライズ
- 12. IDictionary <string、string>またはNameValueCollection
- 13. IDictionaryを辞書に変換する
- 14. IDictionaryをJsonで使用しますか?
- 15. IDictionaryをSelectListにするには?
- 16. 入れ子のインターフェイス:IDictionary <TKey、IEnumerable <TValue>>にIDictionary <TKey、IList <TValue>>をキャストしますか?
- 17. コンストラクタでIDictionaryを初期化するには?
- 18. 多対多リレーションシップをIDictionaryとしてマッピングする
- 19. IDictionaryとConcurrentDictionaryのスレッドセーフティに関する考慮
- 20. IDictionaryのすべてのKeyValuePairsを返す方法C#
- 21. IDictionaryのパフォーマンス<タイプ、オブジェクト> vジェネリックタイプのプロパティ
- 22. 反射を使って汎用IDictionaryの値を取得する
- 23. KeyValueではなくIEnumerable <ValueType>のIDictionary?
- 24. IDictionary <string、object>へのlinqによる動的クエリ?
- 25. 同じデータ(asp.net、c#)のHashtableとIDictionaryを比較
- 26. IDictionary <string、object>のオーバーロードでHtmlHelperを拡張するには?
- 27. コードによるNHibernateマッピング:IDictionaryのマッピング方法?
- 28. MappingByCodeを使用してIDictionary <Entity、Component>をマッピングします
- 29. なぜHttpSessionStateはIDictionaryを実装していないのですか?
- 30. LINQ(C#3.0)を使用してIDictionaryの内容を変更する方法
私はこのクラスにいるクレイジーアクセサのため、私はこの特定のソリューションを実装することができませんでしたが、これは私が探していた創造的なソリューションのタイプでしたので、これを答えとしてマークします。ありがとう! –