Pesanan Anggota Data
Dalam beberapa aplikasi, urutan ini 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 pengurutan data meliputi:
Jika jenis kontrak data adalah bagian dari hierarki pewarisan, anggota data dari jenis dasarnya selalu terlebih dahulu dalam urutan.
Selanjutnya adalah anggota data jenis saat ini yang tidak memiliki properti Order dari set atribut DataMemberAttribute, dalam urutan alfabet.
Selanjutnya adalah setiap anggota data yang memiliki properti Order dari set atribut DataMemberAttribute. Ini diurutkan berdasarkan nilai properti
Order
yang terlebih dahulu dan kemudian menurut abjad jika ada lebih dari satu anggota dari nilaiOrder
tertentu. Nilai urutan dapat dilompati.
Urutan alfabet ditetapkan dengan memanggil metode CompareOrdinal.
Contoh
Mempertimbangkan 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>