Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Secara bawaan, DataContractSerializer menserealisasi semua tipe yang terlihat secara publik. Semua properti baca/tulis publik dan lapangan dari jenis tersebut akan diserialisasikan.
Anda dapat mengubah perilaku default dengan menerapkan DataContractAttribute atribut dan DataMemberAttribute ke jenis dan anggota Fitur ini dapat berguna dalam situasi di mana Anda memiliki jenis yang tidak berada di bawah kontrol Anda dan tidak dapat dimodifikasi untuk menambahkan atribut. DataContractSerializer mengenali jenis "tidak ditandai" seperti itu.
Default Serialisasi
Anda dapat menerapkan DataContractAttribute atribut dan DataMemberAttribute untuk mengontrol atau menyesuaikan serialisasi jenis dan anggota secara eksplisit. Selain itu, Anda dapat menerapkan atribut ini ke bidang privat. Namun, bahkan jenis yang tidak ditandai dengan atribut ini diserialisasikan dan dideserialisasi. Aturan dan pengecualian berikut berlaku:
Menyimpulkan DataContractSerializer kontrak data dari jenis tanpa atribut menggunakan properti default dari jenis yang baru dibuat.
Semua bidang publik, dan properti dengan metode publik
getdansetdiserialisasikan, kecuali Anda menerapkan atribut IgnoreDataMemberAttribute ke anggota tersebut.Semantik serialisasi mirip dengan semantik XmlSerializer.
Dalam jenis yang tidak ditandai, hanya jenis publik dengan konstruktor yang tidak memiliki parameter dapat diserialkan. Pengecualian untuk aturan penggunaan ExtensionDataObject dengan antarmuka IExtensibleDataObject.
Bidang baca-saja, properti tanpa metode
getatauset, dan properti dengan metodesetataugetyang bersifat internal atau privat tidak diserialkan. Properti tersebut diabaikan dan tidak ada pengecualian yang dilemparkan, kecuali dalam kasus koleksi yang hanya bisa diambil.XmlSerializeratribut (seperti
XmlElement, ,XmlAttributeXmlIgnore,XmlInclude, dan sebagainya) diabaikan.Jika Anda tidak menerapkan atribut DataContractAttribute pada jenis tertentu, serializer mengabaikan anggota apapun dari jenis tersebut yang diterapkan atribut DataMemberAttribute.
Properti KnownTypes didukung dalam jenis yang tidak ditandai dengan atribut DataContractAttribute. Ini termasuk dukungan untuk atribut KnownTypeAttribute pada jenis yang tidak ditandai.
Untuk "menolak" proses serialisasi untuk anggota publik, properti, atau bidang, terapkan atribut ke anggota tersebut IgnoreDataMemberAttribute .
Pewarisan
Jenis yang tidak ditandai (jenis tanpa DataContractAttribute atribut) dapat mewarisi dari jenis yang memang memiliki atribut ini; namun, kebalikannya tidak diizinkan: jenis dengan atribut tidak dapat mewarisi dari jenis yang tidak ditandai. Aturan ini diberlakukan terutama untuk memastikan kompatibilitas mundur dengan kode yang ditulis dalam versi .NET Framework sebelumnya.