我確實有一些類來實現它們自己的序列化/反序列化,但是我沒有實現system.runtime.serialization.ISerializable就做了所有這些。所以我的問題是什麼是使用system.runtime.serialization.ISerializable的好處?什麼架構使用system.runtime.serialization.ISerializable?
將我們需要實現system.runtime.serialization.ISerializable例如什麼情況?
我確實有一些類來實現它們自己的序列化/反序列化,但是我沒有實現system.runtime.serialization.ISerializable就做了所有這些。所以我的問題是什麼是使用system.runtime.serialization.ISerializable的好處?什麼架構使用system.runtime.serialization.ISerializable?
將我們需要實現system.runtime.serialization.ISerializable例如什麼情況?
您系列化不符合標準的.NET序列化機制結合起來。您不能與BinaryFormatter
一起使用。 ISerializable
使得a)控制序列化成爲可能b)將其集成到二進制序列化的標準機制中。
而且這是非常奇怪的是,你決定寫自己的序列。編寫高效的生產質量序列化相當昂貴,特別是當二進制和XML序列化準備好在.net中使用時,以及Protobuf和Thrift等一些酷酷的第三方應用程序。
很好的例子,實際上是在ISerializable page MSDN上給出。
一個現實生活中的例子,當你想掛接到二進制序列化是它序列化DateTime
當失去時區。 (至少在.NET 2.0)
ISerializable
所使用的BinaryFormatter
當你需要堅持就是有點複雜得多只是序列化的字段中的數據 - 例如,你想以不同的方式處理數據(可能凝結 - 例如,字典在內存中非常廣泛,但可以是線上的鍵/值列表)。同樣,「鏈接列表」 - 您還想要在一個對象(列表)的序列化中迭代該,而不是僅序列化第一個節點,並讓該節點將自身和下一個節點序列化等。
同意;序列化最好由* library *代碼處理,白癡們花費了大量的時間來考慮常見和邊緣情況。 – 2011-05-09 12:13:06
@Marc Gravell♦是,序列化功能,我絕不會實現,因爲我甚至無法想象它會需要多少時間消耗仍然將是糟糕的:) – Andrey 2011-05-09 12:16:09
我覺得我目前的估計是「地段」 – 2011-05-09 12:19:24