2010-04-26 51 views
3

我正在研究一個.NET項目,其中多個版本的相同類型的對象已在項目生命週期內創建 - 大多數新版本都會添加一個或兩個字段。但是,現在我正在尋求緩解舊版本用戶的問題。如何將缺失字段反序列化爲空

我的目標是,當用戶試圖用新程序打開舊版本的序列化對象時,程序會自動將默認值分配給折舊版本文件中缺少的字段。

例如,假設我有一個包含兩個布爾字段--RoseSound和RepeatForever的類。該計劃的第一個版本不知道如何永遠重複,所以只保存RepeatSound:

<anyType xsi:type="Sound"> 
    <RepeatSound>true</RepeatSound> 
</anyType> 

但新的文件看起來是這樣的:

<anyType xsi:type="Sound"> 
    <RepeatSound>true</RepeatSound> 
    <RepeatForever>true</RepeatForever> 
</anyType> 

我的目標是,當我反序列化新程序中的第一個文件,它將創建Sound對象,但只是將RepeatForever的值默認爲false。現在試圖反序列化第一個對象會引發異常。

感謝您事先的任何答覆

編輯:我使用的是「XmlSerializer的」類

+0

您正在使用哪個序列化程序? – slugster 2010-04-26 22:58:32

回答

0

我相信你將不得不實施[IXmlSerializable][1]接口來自行完成反序列化。

+0

我認爲你是對的 – Nate 2010-04-28 15:53:43

0

this page特別是有關的minOccurs = 0,默認值屬性的部分

+0

不幸的是,這隻能用於屬性,而且我有對象和成員變量。 – Nate 2010-04-28 15:52:12

相關問題