How to serialize IDictionary

前端 未结 3 495
无人及你
无人及你 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:35

    If the class implementing IDictionary is serializable (like Dictionary) 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 dict;
    string[] keys = dict.Keys.ToArray();
    int[] values = dict.Keys.Select(key => dict[key]).ToArray();
    
    // after deserialization
    IDictionary dict = new Dictionary();
    for (int i = 0; i < keys.Length; i++)
        dict.Add(keys[i], values[i]);
    

提交回复
热议问题