3

XSD.EXE を使用して、XML シリアライゼーション用の XSD スキーマからランタイム クラスを生成しています。スキーマは大きく、多くの複雑な型と選択要素が含まれています。http://msdn.microsoft.com/en-us/magazine/cc164135.aspxで説明されているように、choice 要素は 2 つのフィールドを生成します。値を保持する Item フィールドと、どの名前付き要素を定義する生成された列挙型を保持する ItemChoiceType フィールドです。アイテム欄に。

XSD は、これらの要素名フィールドごとに、ItemChoiceTypeXX という名前の一意の列挙型を作成します。ここで、XX は整数です。XSD は、これらの ItemChoiceTypes を必要な数だけ作成し、番号を増やして名前を付けます。

したがって、私のスキーマの一部は次のようになります。

<xsd:choice>
  <xsd:element ref = "Sequence"/>
  <xsd:element ref = "HandshakeId"/>
</xsd:choice>

そして、次のような生成されたクラスを使用するようにコーディングできます。

job.Item = "123";        
job.ItemElementName = ItemChoiceType26.Sequence;

問題は、最初に生成されたクラスでは、この要素の ItemChoiceType が ItemChoiceType26 だったことです。スキーマを更新してクラスを再生成した後、名前は ItemChoiceType27 になりました。

私の質問は、スキーマが時間の経過とともに更新および改訂されるときに、これをどのように管理するかということです。XSD スキーマは管理していません。ベンダーから提供されています。ただし、変更内容に合わせてコードを更新する必要があります。これは、時間の経過とともにメンテナンスの悪夢に直面しているようで、これをより適切に管理するための提案があればお願いします.

4

1 に答える 1