2010-02-04 93 views
1

我遇到了一個場景,最近我們的一位開發人員將一個對象添加到我們未被標記爲數據成員的數據契約中。我們正在使用DataContractSerializer爲我們正在控制的硬件存儲配置文件。序列化操作顯然不成功。如何使DataContractSerializer更安全?

發現的主要問題是配置文件在該過程中被破壞。有沒有人知道在嘗試序列化之前確保對象圖序列化的方法?

來自序列化異常的堆棧跟蹤在調用XmlObjectSerializerContext.CheckIfTypeSerializable(..)時失敗我想知道是否有這樣的事情,我可以在嘗試序列化之前使用。

我想避免的圖形流式傳輸到內存,然後提交,但我想這會工作...

有什麼建議?

回答

0

Scott,我想你的意思是序列化成功,但* de *序列化沒有成功。如果您添加了一個額外的數據成員但忘記了註釋,則序列化器在序列化過程中會忽略它。另外,如果在反序列化過程中看到一個額外的成員,如果您要求嚴格的模式有效性或要求該成員在場,則會拋出該成員;但除此之外,它不會解析這個價值並繼續前進。

有幾種方式來處理這一點 - 使用IExtensibleDataObject,要求數據成員,使用替代品等。參見http://msdn.microsoft.com/en-us/library/ms731138.aspx [數據合同版本]和http://msdn.microsoft.com/en-us/library/ms731083.aspx [向前兼容的數據協定對於更具體的指導。

希望這會有所幫助!

+0

這是沒有成功的序列化。該應用程序試圖將更新保存到配置文件。這失敗了,但在損壞磁盤上的文件之前不會。 – 2011-02-04 04:22:43