How to serialize IDictionary

前端 未结 3 476
无人及你
无人及你 2020-12-20 20:12

Does anyone know of a creative way to serialize objects that implement IDictionary? ...without implementing a new class?

相关标签:
3条回答
  • 2020-12-20 20:12

    I take it you mean you have to serialize a dictionary that's part of class you have no control over?

    In short, you have to serialize the keys and values separately. To deserialize, step through each item in the key/value arrays and add them back to your dictionary.

    0 讨论(0)
  • 2020-12-20 20:22

    You can use the System.Runtime.Serialization.DataContractSerializer, with ReadObject and WriteObject the same way as you would do Deserialize and Serialize. It works like a charm.

    0 讨论(0)
  • 2020-12-20 20:35

    If the class implementing IDictionary is serializable (like Dictionary<K,V>) and K and V are serializable then the standard .NET serialization mechanisms should work.

    If the class implementing IDictionary is serializable but K and V are then you could use two arrays to serialize the keys and associated values separately:

    // 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]);
    
    0 讨论(0)
提交回复
热议问题