6
我有類B
繼承的類A
。我有一個包含A
和B
項目B
類的列表:XML序列化一個基類的列表
List<B> myList = new List<B>();
myList.Add(new A());
當我試圖序列使用XmlSerializable
這個名單,則拋出異常。如果我將列表定義爲B類型,那麼我不會得到這個異常。序列化派生類的最佳方式是什麼?
我有類B
繼承的類A
。我有一個包含A
和B
項目B
類的列表:XML序列化一個基類的列表
List<B> myList = new List<B>();
myList.Add(new A());
當我試圖序列使用XmlSerializable
這個名單,則拋出異常。如果我將列表定義爲B類型,那麼我不會得到這個異常。序列化派生類的最佳方式是什麼?
XmlIncludeAttribute將做的伎倆。
如果你去這個URL,你也會在那裏找到一個代碼示例。
此外,在該示例中該屬性應用於該方法,但您可能希望在您的情況下將其應用於類A。
再次感謝您爲我節省了一大筆頭痛。我一直被困在序列化的一些奇怪的方面:) 一個相關的說明 - 因爲可序列化通過調用get每個公共成員 - 是否有某種有條件的get?我問,因爲我也用它來綁定,所以我的get/set改變了屬性,因此它第二次「設置」(從反序列化)它不是最初預期會進入集合 – Steve 2011-05-30 04:58:49
我將其稱爲「條件訪問器'(這是可能的嗎?) – Steve 2011-05-30 05:02:02
不知道我明白了這個問題。在序列化時,它會在所有公共屬性(字段)上運行'get'。在反序列化中,它通過默認構造函數創建一個對象,然後在每個屬性上調用'set'。 – 2011-05-30 05:04:29