2011-05-09 63 views
3

我確實有一些類來實現它們自己的序列化/反序列化,但是我沒有實現system.runtime.serialization.ISerializable就做了所有這些。所以我的問題是什麼是使用system.runtime.serialization.ISerializable的好處?什麼架構使用system.runtime.serialization.ISerializable?

將我們需要實現system.runtime.serialization.ISerializable例如什麼情況

回答

3

您系列化不符合標準的.NET序列化機制結合起來。您不能與BinaryFormatter一起使用。 ISerializable使得a)控制序列化成爲可能b)將其集成到二進制序列化的標準機制中。

而且這是非常奇怪的是,你決定寫自己的序列。編寫高效的生產質量序列化相當昂貴,特別是當二進制和XML序列化準備好在.net中使用時,以及Protobuf和Thrift等一些酷酷的第三方應用程序。

很好的例子,實際上是在ISerializable page MSDN上給出。

一個現實生活中的例子,當你想掛接到二進制序列化是它序列化DateTime當失去時區。 (至少在.NET 2.0)

+0

同意;序列化最好由* library *代碼處理,白癡們花費了大量的時間來考慮常見和邊緣情況。 – 2011-05-09 12:13:06

+0

@Marc Gravell♦是,序列化功能,我絕不會實現,因爲我甚至無法想象它會需要多少時間消耗仍然將是糟糕的:) – Andrey 2011-05-09 12:16:09

+1

我覺得我目前的估計是「地段」 – 2011-05-09 12:19:24

2

ISerializable所使用的BinaryFormatter當你需要堅持就是有點複雜得多只是序列化的字段中的數據 - 例如,你想以不同的方式處理數據(可能凝結 - 例如,字典在內存中非常廣泛,但可以是線上的鍵/值列表)。同樣,「鏈接列表」 - 您還想要在一個對象(列表)的序列化中迭代該,而不是僅序列化第一個節點,並讓該節點將自身和下一個節點序列化等。