2013-07-16 67 views
2

系列化愁楚continue ...XmlSerialization用單

我試圖序列化類,它們的實例共享它們之間的共同目標(各種粘合劑)。因此,對象A,B,C共享對象Binder1,對象D和E - Binder2等等...我序列化對象A,B,C,D,E。通常情況下,這個綁定對象被傳遞給構造函數 - 不過與序列化器不同,因爲它需要一個無參數的構造函數。

ISeriazable似乎有一些適用於單例 - IObjectReference接口,其中方法GetRealObject可用於返回對新創建的單例的引用。但是,它看起來不像XmlSerializer關心這個接口。

那麼,我應該如何去序列化/反序列化這些對象呢?

編輯:我幾乎準備放棄關於這個問題,因爲我剛剛發現這個question discussed on a forum從2006年(!!)巨頭@JonSkeet和@MarcGravell,這裏的答案是明確的兩者之間沒有用於XmlSerializer的。爲了防止過去7年中事情發生變化,我會繼續討論這個問題。

回答

0

我還沒有找到一種方法來與XmlSerializer本地做到這一點。我確實在Jon Skeet和Marc Gravell之間找到了一個old thread,基本上說你不能像使用ISerializable和IObjectReference那樣完成這個工作。

的方式,我不得不做這項工作是大致如下:

  • GUID字段添加到活頁夾對象(即由多個對象共享的公共對象)
  • 在反序列化,使用靜態字典,並使用具有相同Guid的已註冊的Binder對象,或將新的Binder對象添加到靜態字典中供其他人鏈接。