代码之家  ›  专栏  ›  技术社区  ›  Tony The Lion

序列化对象集合中的每个对象

  •  1
  • Tony The Lion  · 技术社区  · 15 年前

    我有这个代码用于序列化我的自定义userdata对象集合。然而 current 属性只表示集合中当前使用的项,因此它只序列化该对象。

    我希望我的集合中的所有对象都序列化,在 GetObjectData 我收藏的实现?

            public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
            {
                // Add the userdata object to SerializationInfo object
                    info.AddValue("UserData", current);
            }
    

    这是我的反序列化构造函数,我不确定这是否也会反序列化集合中的每个对象。

    public UserDataCollection(SerializationInfo serializationInfo, StreamingContext ctxt)
            {
                UserData data = (UserData)serializationInfo.GetValue("UserData", typeof(UserData));
                  // Add to objects existing collection
                this.Add(data);
            }
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   Marc Gravell    15 年前

    你在幕后是怎么拿东西的?你有 List<T> 去什么地方?只是序列化/反序列化它,让它担心它。老实说,这应该只是 发生 如果将自定义集合包装标记为 [Serializable] 并标记任何不必要的字段(例如 current 作为 [NonSerialized] (即无需实施 ISerializable )

    注意,在大多数情况下,我倾向于建议 反对 BinaryFormatter ;发送短期(暂时)消息是可以的,但我不建议将其用于存储目的(在文件或数据库中);您可能会遇到很多版本控制问题,试图在以后反序列化。