2010-01-13 172 views
1

我有這段代碼用於序列化我自定義的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); 
     } 
+0

(回覆評論) –

回答

1

你是如何把你的物體放在幕後?你在某個地方有List<T>字段嗎?只需序列化/反序列化,並讓它擔心它。說實話,如果您將自定義收集包裝標記爲[Serializable],並且將任何不必要的字段(如current)標記爲[NonSerialized](即不需要實施ISerializable),則應該只是發生

請注意,在大多數情況下,我傾向於建議針對BinaryFormatter;發送短暫(短暫)消息是可以的,但我不建議將它用於存儲目的(在文件或數據庫中);您可能會收到很多版本問題,試圖在以後反序列化。

+0

感謝馬克!我想知道,你會推薦什麼樣的序列化? XML? –

+0

這取決於你需要什麼。 XmlSerializer/DataContractSerializer是用於xml的; json.net是另一種基於文本的選項。對於二進制文件,我推薦protobuf-net,但我有點......(但它是免費的......) –