データ メンバの順序
一部のアプリケーションでは、各種のデータ メンバから送信される、または受信されると予想できるデータの順序 (たとえばシリアル化された XML でデータが表れる順序) がわかると便利です。この順序を変更する必要が生じることもあります。ここでは、このような順序を決定する規則について説明します。
基本的な規則
データの順序を決定する基本的な規則には、次のようなものがあります。
- データ コントラクト型が継承階層の一部である場合、その基本型のデータ メンバが常に最初の順番になります。
- 次に来るのは DataMemberAttribute 属性の Order プロパティが設定されていない、現在の型のデータ メンバ (アルファベット順) になります。
- その次に来るのは、DataMemberAttribute 属性の Order プロパティが設定されているすべてのデータ メンバです。これらのデータ メンバはまず Order プロパティの値によって並べられ、次に特定の Order 値を持つメンバが複数ある場合は、そのアルファベット順に並びます。Order 値はスキップされることがあります。
アルファベット順は、CompareOrdinal メソッドを呼び出すことによって確立されます。
例
次のコードについて考えてみましょう。
作成される XML は、次のようになります。
<DerivedType>
<!-- Zebra is a base data member, and appears first. -->
<zebra/>
<!-- Cat has no Order, appears alphabetically first. -->
<cat/>
<!-- Dog has no Order, appears alphabetically last. -->
<dog/>
<!-- Bird is the member with the smallest Order value -->
<bird/>
<!-- Albatross has the next Order value, alphabetically first. -->
<albatross/>
<!-- Parrot, with the next Order value, alphabetically last. -->
<parrot/>
<!-- Antelope is the member with the highest Order value. Note that
Order=2 is skipped -->
<antelope/>
</DerivedType>