2009-01-24 55 views
2

我需要一個.net的序列化庫,它具有比默認的xml序列化器更好的功能。 問題是它不是多態的 - 比如你有類B:A {},並且已經序列化了一個B類型,你應該可以調用A myBaseType = Deserialize(xml)並且返回一個B類型的實例在myBaseType變量中。.net的最佳序列化庫,能夠正確地反序列化繼承

我有一個實施在http://refactormycode.com/codes/710-polymorphic-xml-serializer單元測試序列庫應該能夠處理。如果要序列化的對象具有也是多態序列化類型的子類型,則此實現不起作用,所以我需要更好的東西。

謝謝!

回答

1

如果你可以處理去往序列化器的附加詳細信息,該序列化程序將類型信息嵌入到結果流中可能是最好的。

.Net提供了SoapFormatter,它過於冗長,並且執行了您可能不需要的操作,但是當您反序列化流時,它將簡單地返回適當的對象(無需指定僅轉換根對象的類型到你知道它的類型)。

作爲附帶利益,它將正確處理對象圖中的週期和共享引用。

+0

看起來不錯。你說的有點冗長,但它很有效! – mcintyre321 2009-01-24 18:26:27

0

您可以使用.NET的二進制序列化程序,還是需要使用XML?我有一個關於.NET的XML處理的投訴類似的列表,特別是當試圖序列化圖形而不是樹時。

在我需要XML正常工作的地方,我最終爲每個類推出了自己的序列化代碼。

0

protobuf-net支持大多數繼承路由(即使規範沒有)。有一個已知的故障(我正在處理; -p) - 但它涵蓋了大多數選項。