私はxsd.exeツールを使用してクラスに変換した非常に複雑なXSDスキーマを持っています。要素に「Choice」タグが含まれていて、使用可能な選択肢がすべて異なるカスタムタイプであった場合のために、いくつかの設定を追加/編集する必要がありました。それはすべてうまくいきました。シーケンスでプロパティをシリアライズ
私が直面した問題は、 'Sequence'タグを含む要素が必ずしも順番に直列化されないということです。私は、例えば、注文の属性を使用して順序を強制しようとしている:
<XmlElement(Order:=5)>
Public Property no_autor() As String
Get
Return Me.no_autorField
End Get
Set
Me.no_autorField = Value
End Set
End Property
しかし、適切にシリアライズされていない型が基本型に由来します。基本型は2つの要素しか持たないので、Order = 1とOrder = 2の順に並べます。この時点で、それは混乱し始めます。派生型は別のクラスにあるので、1または3で順序を開始しますか?私は基本型が常に最初にシリアル化されるので、おそらく派生型が1で始まっていても基本型の後に正しく並べ替えると思ったので、MSDNのドキュメントを読んだことがあります。私が1または3で始めるときに、クラス全体がシリアル化できないという簡単なエラーが表示されます。プロパティが
System.Xml.Serialization.XmlIgnoreAttribute()
が飾られている場合
また、私はまだそれが順序に含まれていますか?
最後に、XSDファイルに表示されるようにシーケンスを適用する方が良いでしょうか?私が言及したように、このファイルは非常に複雑で、Choice、Sequence、Extensionタグでいっぱいです。すべての要素を通過し、Orderを追加してから(そしてそれが何度も失敗する)、派生したすべての型(通常2〜3つの深さ)を考慮に入れることは、非常に効率的な時間の使用ではありません。