DataContractSerializer Kelas

Definisi

Menserialisasikan dan mendeserialisasi instans jenis ke dalam aliran XML atau dokumen menggunakan kontrak data yang disediakan. Kelas ini tidak dapat diwariskan.

public ref class DataContractSerializer sealed : System::Runtime::Serialization::XmlObjectSerializer
public sealed class DataContractSerializer : System.Runtime.Serialization.XmlObjectSerializer
type DataContractSerializer = class
    inherit XmlObjectSerializer
Public NotInheritable Class DataContractSerializer
Inherits XmlObjectSerializer
Warisan
DataContractSerializer

Keterangan

Gunakan kelas DataContractSerializer untuk melakukan serialisasi dan deserialisasi instans dari suatu tipe ke dalam aliran atau dokumen XML. Misalnya, Anda dapat membuat jenis bernama Person dengan properti yang berisi data penting, seperti nama dan alamat. Anda kemudian dapat membuat dan memanipulasi instans Person kelas dan menulis semua nilai propertinya dalam dokumen XML untuk pengambilan nanti, atau dalam aliran XML untuk transportasi segera. Yang terpenting, DataContractSerializer digunakan untuk menserialisasikan dan mendeserialisasi data yang dikirim dalam pesan Windows Communication Foundation (WCF). Terapkan atribut DataContractAttribute pada kelas, dan atribut DataMemberAttribute pada anggota kelas untuk menentukan properti dan bidang yang akan diserialisasi.

Untuk daftar jenis yang dapat diserialisasikan, lihat Jenis yang Didukung oleh Serializer Kontrak Data.

Untuk menggunakan DataContractSerializer, pertama buatlah instans kelas dan objek yang sesuai untuk menulis atau membaca format; misalnya, instans dari XmlDictionaryWriter. Kemudian panggil WriteObject metode untuk mempertahankan data. Untuk mengambil data, buat objek yang sesuai untuk membaca format data (seperti XmlDictionaryReader untuk dokumen XML) dan panggil ReadObject metode .

Untuk informasi selengkapnya tentang menggunakan DataContractSerializer, lihat Serialisasi dan Deserialisasi.

Anda dapat mengatur jenis serializer kontrak data menggunakan <elemen dataContractSerializer> dalam file konfigurasi aplikasi klien.

Menyiapkan kelas untuk serialisasi atau deserialisasi

DataContractSerializer digunakan dalam kombinasi dengan kelas DataContractAttribute dan DataMemberAttribute. Untuk menyiapkan kelas untuk serialisasi, terapkan DataContractAttribute ke kelas . Untuk setiap anggota kelas yang mengembalikan data yang ingin Anda serialkan, terapkan DataMemberAttribute. Anda dapat membuat serialisasi bidang dan properti, terlepas dari aksesibilitas: privat, terlindungi, internal, terlindungi internal, atau publik.

Misalnya, skema Anda menentukan Customer dengan ID properti, tetapi Anda sudah memiliki aplikasi yang sudah ada yang menggunakan jenis bernama Person dengan Name properti. Untuk membuat jenis yang sesuai dengan kontrak, pertama-tama terapkan DataContractAttribute ke kelas . Kemudian terapkan DataMemberAttribute pada setiap bidang atau properti yang ingin Anda serialkan.

Note

Anda dapat menerapkan DataMemberAttribute pada anggota privat dan publik.

Format akhir XML tidak perlu berupa teks. Sebaliknya, DataContractSerializer menuliskan data sebagai himpunan info XML, yang memungkinkan Anda menulis data ke format apa pun yang dikenali oleh XmlReader dan XmlWriter. Disarankan agar Anda menggunakan XmlDictionaryReader kelas dan XmlDictionaryWriter untuk membaca dan menulis, karena keduanya dioptimalkan untuk bekerja dengan DataContractSerializer.

Jika Anda membuat kelas yang memiliki bidang atau properti yang harus diisi sebelum serialisasi atau deserialisasi terjadi, gunakan atribut panggilan balik, seperti yang dijelaskan dalam Version-Tolerant Panggilan Balik Serialisasi.

Tambahkan ke kumpulan jenis yang diketahui

Saat melakukan serialisasi atau deserialisasi objek, diperlukan bahwa tipe tersebut "diketahui" oleh DataContractSerializer. Mulailah dengan membuat instans dari kelas IEnumerable<T> yang mengimplementasikan (seperti List<T>) dan menambahkan jenis yang diketahui ke koleksi. Kemudian buat instance dari DataContractSerializer menggunakan salah satu overload yang menerima IEnumerable<T> (misalnya, DataContractSerializer(Type, IEnumerable<Type>)).

Note

Tidak seperti jenis primitif lainnya, DateTimeOffset struktur bukan jenis yang diketahui secara default, jadi harus ditambahkan secara manual ke daftar jenis yang diketahui (lihat Jenis Yang Diketahui Kontrak Data).

Kompatibilitas ke depan

DataContractSerializer memahami kontrak data yang telah dirancang agar kompatibel dengan versi kontrak di masa mendatang. Jenis tersebut IExtensibleDataObject mengimplementasikan antarmuka. Antarmuka memiliki properti ExtensionData yang mengembalikan objek ExtensionDataObject. Untuk informasi selengkapnya, lihat Kontrak DataForward-Compatible.

Konstruktor

Nama Deskripsi
DataContractSerializer(Type, DataContractSerializerSettings)

Menginisialisasi instans DataContractSerializer baru kelas untuk menserialisasikan atau mendeserialisasi objek dari jenis dan pengaturan yang ditentukan.

DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)

Menginisialisasi instans DataContractSerializer baru kelas untuk membuat serialisasi atau mendeserialisasi objek dari jenis yang ditentukan. Metode ini juga menentukan daftar jenis yang diketahui yang mungkin ada dalam grafik objek, jumlah maksimum item grafik untuk diserialisasikan, parameter untuk mengabaikan data yang tidak terduga, apakah akan menggunakan konstruksi XML non-standar untuk mempertahankan data referensi objek dalam grafik, pengganti untuk serialisasi kustom, dan alternatif untuk memetakan xsi:type deklarasi pada waktu proses.

DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)

Menginisialisasi instans DataContractSerializer baru kelas untuk membuat serialisasi atau mendeserialisasi objek dari jenis yang ditentukan. Metode ini juga menentukan daftar jenis yang diketahui yang mungkin ada dalam grafik objek, jumlah maksimum item grafik untuk diserialisasikan, parameter untuk mengabaikan data yang tidak terduga, apakah akan menggunakan konstruksi XML non-standar untuk mempertahankan data referensi objek dalam grafik, dan pengganti untuk serialisasi kustom.

DataContractSerializer(Type, IEnumerable<Type>)

Menginisialisasi instans DataContractSerializer baru kelas untuk menserialisasikan atau mendeserialisasi objek dari jenis yang ditentukan, dan kumpulan jenis yang diketahui yang mungkin ada dalam grafik objek.

DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)

Menginisialisasi instans DataContractSerializer baru kelas untuk membuat serialisasi atau mendeserialisasi objek dari jenis yang ditentukan. Metode ini juga menentukan daftar jenis yang diketahui yang mungkin ada dalam grafik objek, jumlah maksimum item grafik untuk diserialisasikan, parameter untuk mengabaikan data yang tidak terduga, apakah akan menggunakan konstruksi XML non-standar untuk mempertahankan data referensi objek dalam grafik, pengganti untuk serialisasi kustom, elemen XML dan namespace yang berisi konten, dan alternatif untuk memetakan xsi:type deklarasi pada run time.

DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)

Menginisialisasi instans DataContractSerializer baru kelas untuk membuat serialisasi atau mendeserialisasi objek dari jenis yang ditentukan. Metode ini juga menentukan daftar jenis yang diketahui yang mungkin ada dalam grafik objek, jumlah maksimum item grafik untuk diserialisasikan, parameter untuk mengabaikan data yang tidak terduga, apakah akan menggunakan konstruksi XML non-standar untuk mempertahankan data referensi objek dalam grafik, pengganti untuk serialisasi kustom, dan elemen XML dan namespace yang berisi konten.

DataContractSerializer(Type, String, String, IEnumerable<Type>)

Menginisialisasi instans DataContractSerializer baru kelas untuk membuat serialisasi atau mendeserialisasi objek dari jenis yang ditentukan. Metode ini juga menentukan elemen XML akar dan namespace dalam dua parameter string serta daftar jenis yang diketahui yang mungkin ada dalam grafik objek.

DataContractSerializer(Type, String, String)

Menginisialisasi instans DataContractSerializer baru kelas untuk menserialisasikan atau mendeserialisasi objek dari jenis yang ditentukan menggunakan elemen akar XML dan namespace yang disediakan.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)

Menginisialisasi instans DataContractSerializer baru kelas untuk membuat serialisasi atau mendeserialisasi objek dari jenis yang ditentukan. Metode ini juga menentukan daftar jenis yang diketahui yang mungkin ada dalam grafik objek, jumlah maksimum item grafik untuk diserialisasikan, parameter untuk mengabaikan data yang tidak terduga, apakah akan menggunakan konstruksi XML non-standar untuk mempertahankan data referensi objek dalam grafik, pengganti untuk serialisasi kustom, parameter XmlDictionaryString yang menentukan elemen XML dan namespace yang berisi konten, dan alternatif untuk memetakan xsi:type deklarasi pada run time.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)

Menginisialisasi instans DataContractSerializer baru kelas untuk membuat serialisasi atau mendeserialisasi objek dari jenis yang ditentukan. Metode ini juga menentukan daftar jenis yang diketahui yang mungkin ada dalam grafik objek, jumlah maksimum item grafik untuk diserialisasikan, parameter untuk mengabaikan data yang tidak terduga, apakah akan menggunakan konstruksi XML non-standar untuk mempertahankan data referensi objek dalam grafik, pengganti untuk serialisasi kustom, dan parameter XmlDictionaryString yang menentukan elemen XML dan namespace yang berisi konten.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>)

Menginisialisasi instans DataContractSerializer baru kelas untuk membuat serialisasi atau mendeserialisasi objek dari jenis yang ditentukan. Metode ini juga menentukan elemen XML akar dan namespace layanan dalam dua XmlDictionaryString parameter serta daftar jenis yang diketahui yang mungkin ada dalam grafik objek.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString)

Menginisialisasi instans DataContractSerializer baru kelas untuk menserialisasikan atau mendeserialisasi objek dari jenis yang ditentukan menggunakan elemen akar XML dan namespace yang ditentukan melalui parameter jenis XmlDictionaryString.

DataContractSerializer(Type)

Menginisialisasi instans DataContractSerializer baru kelas untuk membuat serialisasi atau mendeserialisasi objek dari jenis yang ditentukan.

Properti

Nama Deskripsi
DataContractResolver

Mendapatkan komponen yang digunakan untuk memetakan xsi:type deklarasi secara dinamis ke jenis kontrak yang diketahui.

DataContractSurrogate

Mendapatkan jenis pengganti yang dapat memperluas proses serialisasi atau deserialisasi.

IgnoreExtensionDataObject

Mendapatkan nilai yang menentukan apakah akan mengabaikan data yang disediakan oleh ekstensi kelas saat kelas sedang diserialisasikan atau dideserialisasi.

KnownTypes

Mendapatkan kumpulan jenis yang mungkin ada dalam grafik objek yang diserialisasikan menggunakan instans ini dari DataContractSerializer.

MaxItemsInObjectGraph

Mendapatkan jumlah maksimum item dalam grafik objek untuk diserialisasikan atau dideserialisasi.

PreserveObjectReferences

Mendapatkan nilai yang menentukan apakah akan menggunakan konstruksi XML non-standar untuk mempertahankan data referensi objek.

SerializeReadOnlyTypes

Mendapatkan nilai yang menentukan apakah jenis baca-saja diserialisasikan.

Metode

Nama Deskripsi
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
IsStartObject(XmlDictionaryReader)

Menentukan apakah XmlDictionaryReader diposisikan pada objek yang dapat dideserialisasi.

IsStartObject(XmlReader)

Menentukan apakah XmlReader diposisikan pada objek yang dapat dideserialisasi.

MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
ReadObject(Stream)

Membaca aliran XML atau dokumen dengan Stream dan mengembalikan objek yang dideserialisasi.

(Diperoleh dari XmlObjectSerializer)
ReadObject(XmlDictionaryReader, Boolean, DataContractResolver)

Membaca dokumen XML atau aliran dokumen dan mengembalikan objek yang dideserialisasi. Metode ini mencakup parameter untuk menentukan apakah nama objek diverifikasi divalidasi, dan pemecah masalah untuk memetakan xsi:type deklarasi saat runtime.

ReadObject(XmlDictionaryReader, Boolean)

Membaca aliran XML dengan XmlDictionaryReader dan mengembalikan objek yang dideserialisasi, dan juga menentukan apakah pemeriksaan dilakukan untuk memverifikasi nama objek sebelum membaca nilainya.

ReadObject(XmlDictionaryReader)

Membaca dokumen XML atau streaming dengan XmlDictionaryReader dan mengembalikan objek yang dideserialisasi.

(Diperoleh dari XmlObjectSerializer)
ReadObject(XmlReader, Boolean)

Membaca aliran XML dengan XmlReader dan mengembalikan objek yang dideserialisasi, dan juga menentukan apakah pemeriksaan dilakukan untuk memverifikasi nama objek sebelum membaca nilainya.

ReadObject(XmlReader)

Membaca aliran XML dengan XmlReader dan mengembalikan objek yang dideserialisasi.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
WriteEndObject(XmlDictionaryWriter)

Menulis elemen XML penutup menggunakan XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Menulis elemen XML penutup menggunakan XmlWriter.

WriteObject(Stream, Object)

Menulis konten lengkap (mulai, konten, dan akhir) objek ke dokumen XML atau streaming dengan yang ditentukan Stream.

(Diperoleh dari XmlObjectSerializer)
WriteObject(XmlDictionaryWriter, Object, DataContractResolver)

Menulis semua data objek (memulai elemen XML, konten, dan elemen penutup) ke dokumen XML atau aliran menggunakan XmlDictionaryWriter yang ditentukan. Metode ini mencakup resolver untuk memetakan xsi:type deklarasi pada runtime.

WriteObject(XmlDictionaryWriter, Object)

Menulis konten lengkap (mulai, konten, dan akhir) objek ke dokumen XML atau streaming dengan yang ditentukan XmlDictionaryWriter.

(Diperoleh dari XmlObjectSerializer)
WriteObject(XmlWriter, Object)

Menulis semua data objek (memulai elemen XML, konten, dan elemen penutup) ke dokumen XML atau streaming dengan XmlWriter.

WriteObjectContent(XmlDictionaryWriter, Object)

Menulis konten XML menggunakan XmlDictionaryWriter.

WriteObjectContent(XmlWriter, Object)

Menulis konten XML menggunakan XmlWriter.

WriteStartObject(XmlDictionaryWriter, Object)

Menulis elemen XML pembuka menggunakan XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object)

Menulis elemen XML pembuka menggunakan XmlWriter.

Metode Ekstensi

Nama Deskripsi
GetSerializationSurrogateProvider(DataContractSerializer)

Mengembalikan penyedia serialisasi pengganti untuk serializer ini.

SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider)

Menentukan penyedia serialisasi pengganti untuk ini DataContractSerializer.

Berlaku untuk

Keamanan Thread

Instans kelas ini aman utas kecuali ketika instans digunakan dengan implementasi IDataContractSurrogate atau DataContractResolver.

Lihat juga