使用 DCS,我试图从 XML 中反序列化对象,其中序列化的对象是 Child 继承类 Base 的类型,其中 Child 具有一些已反序列化但后来在代码中移动到类 Base 的属性。现在这些属性不会被反序列化:
看看这个 XML:
<Base i:type="a:DirectoryEntry" xmlns="http://schemas.datacontract.org/2004/07/pending.Core.Models" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://schemas.datacontract.org/2004/07/pending.Core.Models.Directory">
<Active>true</Active>
<ContentType>DirectoryEntry</ContentType>
<Created>2012-03-12T11:51:25.3401552+01:00</Created>
<a:Location>location</a:Location>
<a:OpenHours>opening</a:OpenHours>
</Base>
xmlns:a 表示派生类型名称。这个类用来存放那些道具。现在它们被移到基类中,不再被 DCS 反序列化(反序列化后属性为空)。我说的是属性:在它们前面(在这种情况下是位置和开放时间)。
我们有很多这样的文件保存数据。使用 DCS 正确反序列化这些文件有哪些选择?
请注意 [KnownType] 属性在 Base 和 Child 类中都使用