代码之家  ›  专栏  ›  技术社区  ›  Joe Davis

如何序列化IDictionary

c#
  •  5
  • Joe Davis  · 技术社区  · 16 年前

    3 回复  |  直到 16 年前
        1
  •  13
  •   dtb    16 年前

    如果类实现 IDictionary 是可序列化的(如 Dictionary<K,V> )及 K V 是可序列化的,那么标准的.NET序列化机制应该可以工作。

    如果类实现 是可序列化的,但 v 然后,您可以使用两个数组分别序列化键和关联值:

    // 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]);
    
        2
  •  1
  •   Jon B    16 年前

    简而言之,您必须分别序列化键和值。要反序列化,请单步遍历键/值数组中的每个项,并将它们添加回字典。

        3
  •  0
  •   Larry    14 年前

    System.Runtime.Serialization.DataContractSerializer 具有 ReadObject WriteObject 和你一样 Deserialize Serialize .