2011-10-12 28 views
6

使用.NET 4/C#...反序列化類型,其命名空間已經改變

我需要反序列化包含姓名的人士稱,ns1.X類型的序列化表示舊的配置文件。序列化已使用BinaryFormatter完成。

問題是,經過一輪重構之後,類型X已被移動到不同的名稱空間,比如ns2.X。

我試圖創建一個從ns2.X派生的新的空ns1.X類型,而這種繞開「找不到類型ns1.X」錯誤,在反序列化對象的屬性都null 。另外,在這個過程中沒有任何客戶被調用。

有什麼建議嗎?

+1

不知道這是否可以解決你的問題,因爲我從來沒有真正使用它,但我記得前段時間在TypeForwarding上讀到:你可以在這裏找到信息:http:// msdn .microsoft.com/en-us/library/ms404275.aspx – Anton

+0

有趣。我會檢查出來的。 –

+0

谷歌搜索發現這可能有所幫助: http://www.codeproject.com/KB/cs/DrawWithMouse.aspx#AdvancedBinarySerialization:DeserializinganObjectIntoaDifferentTypeThantheOneItwasSerializedInto9 – Dan

回答

1

您將需要使用ISerializationSurregate來實現此目的。這並不難,傑夫裏希特解釋得很好。我推薦他的書CLR Via c#3.