0

我的 SDK(几何)中有一个基类,用于序列化其成员。一些成员只是简单的属性和元素,如字符串,而其他成员是用户定义类的数组。现在,我需要适应我的工作流程中的更改,这会导致基类成为父类的子类,这意味着 XML 层次结构也会发生变化。而且,我还想重命名一些属性/元素。

但是,使用以前的 SDK 代码(类层次结构)序列化的 XML 呢?如何将这些 XML 反序列化到新的 SDK 中?

<Geometry Type"Test" IsAssessed="False">
    <Name>Sample Geometry</Name>
    <LengthA>69</LengthA>
    <LengthB>87</LengthB>
    <LengthC>50</LengthC>
        <Points>
            <Point X="1537308.5" Y="16030594.72" Z="1000">
                <IsTracked>false</IsTracked>
            </Point>
            <Point X="1537308.5" Y="16030594.72" Z="900">
                <IsTracked>false</IsTracked>
            </Point>
            <Point X="1536601.21" Y="16028954.3" Z="-5670.6">
                <IsTracked>false</IsTracked>
            </Point>
        </Points>
</Geometry>

所以,让我们说在进行更改之后,引入了一个名为 Calculator 的类,它有一个几何集合。但我想重命名几何以及重命名它的一些元素/属性。并添加/删除属性。

我该如何去做,以便我以前的 XML 成功反序列化。

4

1 回答 1

0

看看Version Tolerant Serialization

这允许您添加标签(OptionalField、OnDeserializing 等)来说明 XML 结构中的更改。

或者,如果它是一次性的,您可以反序列化为旧版本,然后实施转换代码以更新到新版本。如果这是经常发生的事情,这可能会变得非常难以维护。

如果您可以选择更改,某些序列化格式在版本控制方面比 XML 提供更大的灵活性,例如Protocol Buffers

于 2015-03-03T07:01:36.650 回答