0

SDK (Geometry) にメンバーをシリアル化する基本クラスがあります。一部のメンバーは単純な属性と文字列のような要素であり、他のメンバーはユーザー定義クラスの配列です。ここで、基本クラスが親クラスの子になるワークフローの変更に対応する必要があります。これは、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 という名前のクラスが導入され、Geometry のコレクションがあるとしましょう。しかし、ジオメトリの名前を変更し、その要素/属性の名前を変更したいと考えています。また、属性も追加/削除します。

以前の XML が正常に逆シリアル化されるようにするにはどうすればよいですか。

4

1 に答える 1

0

Version Tolerant Serializationをご覧ください。

これにより、タグ (OptionalField、OnDeserializing など) を追加して、XML 構造の変更を考慮することができます。

または、一度限りの場合は、古いバージョンにデシリアライズしてから、変換コードを実装して新しいバージョンに更新することができます。ただし、これが定期的に発生している場合、これを維持するのは非常に困難になる可能性があります。

変更するオプションがある場合、一部のシリアライゼーション形式は XML よりもバージョニングに関する柔軟性が高くなります (プロトコル バッファーなど) 。

于 2015-03-03T07:01:36.650 に答える