使用DataContractSerializer我想序列化從 A 類(lèi)繼承的對(duì)象列表。這些對(duì)象在不同的程序集中,假設(shè)它們屬于 B、C 和 D 類(lèi)。我已將 B、C 和 D 添加到已知類(lèi)型的數(shù)據(jù)中合約序列化器。我能夠序列化列表,但序列化的結(jié)果如下所示:<SerializedListObjects> <A i:type="B"> <A i:type="C"></SerializedListObjects>我想要的是:<SerializedListObjects> <B> <C></SerializedListObjects>B 和 C 中可能有一些屬性具有從 A 繼承的信息。這是我的基類(lèi): [Serializable] [DataContract(Name = "A")] public abstract class A { }這是派生類(lèi)定義的示例。 [Serializable] [DataContract(Name = "B")] public class B : A { }由于派生類(lèi)在不同的程序集中,我不能在它們的基類(lèi)或包含派生類(lèi)名稱(chēng)的序列化類(lèi)中放置任何屬性(例如[XmlElement("B", Type = typeof(ChildB))]) - 我無(wú)法訪(fǎng)問(wèn)那里的派生類(lèi)。是否可以?雖然我目前正在使用DataContractSerializer,但我愿意XmlSerializer在必要時(shí)切換到另一個(gè) XML 序列化程序。
將類(lèi)A繼承的對(duì)象列表序列化為xml,因此xml中元素的名稱(chēng)為B,C,D
BIG陽(yáng)
2021-06-18 17:00:32