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

时间:2010-01-13 18:32:43

标签: c# serialization collections

我有这个代码用于序列化我自定义的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 个答案:

答案 0 :(得分:1)

你是如何在幕后举办物品的?你在某个地方有List<T>字段吗?只需序列化/反序列化,让它担心它。说实话,如果您将自定义集合包装器标记为[Serializable]并将任何不必要的字段(例如current)标记为[NonSerialized],则应该发生(即无需实施ISerializable)。

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