Urutan Anggota Data

Dalam beberapa aplikasi, berguna untuk mengetahui urutan data dari berbagai anggota data dikirim atau diharapkan diterima (seperti urutan data muncul dalam XML serial). Terkadang mungkin perlu untuk mengubah urutan ini. Topik ini menjelaskan aturan pemesanan.

Aturan Dasar

Aturan dasar untuk pemesanan data meliputi:

  • Jika jenis kontrak data adalah bagian dari hierarki pewarisan, anggota data dari jenis dasarnya selalu terlebih dahulu dalam urutan.

  • Selanjutnya secara berurutan adalah anggota data jenis saat ini yang tidak memiliki Order properti set DataMemberAttribute atribut, dalam urutan alfabet.

  • Selanjutnya adalah anggota data apa pun yang memiliki properti Order dari atribut DataMemberAttribute yang ditetapkan. Ini diurutkan berdasarkan nilai Order properti terlebih dahulu dan kemudian menurut abjad jika ada lebih dari satu anggota dari nilai tertentu Order . Nilai pesanan mungkin bisa dilewati.

Urutan alfabet dibuat dengan memanggil CompareOrdinal metode .

Contoh

Pertimbangkan kode berikut.

[DataContract]
public class BaseType
{

    [DataMember]
    public string zebra;
}
[DataContract]
public class DerivedType : BaseType
{
    [DataMember(Order = 0)]
    public string bird;
    [DataMember(Order = 1)]
    public string parrot;
    [DataMember]
    public string dog;
    [DataMember(Order = 3)]
    public string antelope;
    [DataMember]
    public string cat;
    [DataMember(Order = 1)]
    public string albatross;
}
<DataContract()> _
Public Class BaseType
    <DataMember()> Public zebra As String
End Class

<DataContract()> _
Public Class DerivedType
    Inherits BaseType
    <DataMember(Order:=0)> Public bird As String
    <DataMember(Order:=1)> Public parrot As String
    <DataMember()> Public dog As String
    <DataMember(Order:=3)> Public antelope As String
    <DataMember()> Public cat As String
    <DataMember(Order:=1)> Public albatross As String
End Class

XML yang dihasilkan mirip dengan yang berikut ini.

<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>

Lihat juga