使用DataContractSerializer我想序列化从 A 类继承的对象列表。这些对象在不同的程序集中,假设它们属于 B、C 和 D 类。我已将 B、C 和 D 添加到已知类型的数据中合约序列化器。我能够序列化列表,但序列化的结果如下所示:
<SerializedListObjects>
<A i:type="B">
<A i:type="C">
</SerializedListObjects>
我想要的是:
<SerializedListObjects>
<B>
<C>
</SerializedListObjects>
B 和 C 中可能有一些属性具有从 A 继承的信息。
这是我的基类:
[Serializable]
[DataContract(Name = "A")]
public abstract class A
{
}
这是派生类定义的示例。
[Serializable]
[DataContract(Name = "B")]
public class B : A
{
}
由于派生类在不同的程序集中,我不能在它们的基类或包含派生类名称的序列化类中放置任何属性(例如[XmlElement("B", Type = typeof(ChildB))]) - 我无法访问那里的派生类。
是否可以?
虽然我目前正在使用DataContractSerializer,但我愿意XmlSerializer在必要时切换到另一个 XML 序列化程序。
相关分类