XmlSerializer需要宣告所有衍生型別

以前一直以為只要寫好Class的宣告,再用XmlSerializer::Serialize()及XmlSerializer::Deserializer()就可以很簡單地將物件轉成xml格式來匯出及匯入。沒想到,有一次在使用時,只是多加了一個衍生類別,就造成匯出xml時出現例外錯誤。

錯誤訊息如下:


看來是說不需要我新加的衍生類別,但又說要使用XmlInclude。於是就查了一下XmlInclude,原本如果有新增的衍生類別(有一個以上的衍生類別)的話,就要在基底類別加上用XmlInclude宣告的屬性。

如果不想要宣告在基底類別的話,可以用另一個XmlSerializer的建構子,傳入所要使用的衍生類別的型別

使用第二種方式的好處是,當你自行再衍生出其它新的類別,而不是當初已知的類別時,就可以用第二種方式來動態地加入新的衍生類別。


留言

這個網誌中的熱門文章

DOS Batch指令檔中如何記錄log資訊

用捷徑方式執行需帶入命令列參數的Windows Form程式

使用regular expression來match中括號(square bracket)