IXmlSerializable Antarmuka
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan pemformatan kustom untuk serialisasi XML dan deserialisasi.
public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
- Turunan
Contoh
Contoh kode berikut menunjukkan implementasi IXmlSerializable antarmuka yang menserialisasikan bidang privat.
#using <System.Xml.dll>
using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::Xml::Serialization;
public ref class Person: public IXmlSerializable
{
private:
// Private state
String^ personName;
public:
// Constructors
Person( String^ name )
{
personName = name;
}
Person()
{
personName = nullptr;
}
// Xml Serialization Infrastructure
virtual void WriteXml( XmlWriter^ writer )
{
writer->WriteString( personName );
}
virtual void ReadXml( XmlReader^ reader )
{
personName = reader->ReadString();
}
virtual XmlSchema^ GetSchema()
{
return nullptr;
}
// Print
virtual String^ ToString() override
{
return (personName);
}
};
using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
public class Person : IXmlSerializable
{
// Private state
private string personName;
// Constructors
public Person (string name)
{
personName = name;
}
public Person ()
{
personName = null;
}
// Xml Serialization Infrastructure
public void WriteXml (XmlWriter writer)
{
writer.WriteString(personName);
}
public void ReadXml (XmlReader reader)
{
personName = reader.ReadString();
}
public XmlSchema GetSchema()
{
return(null);
}
// Print
public override string ToString()
{
return(personName);
}
}
Keterangan
Ada dua alasan untuk mengimplementasikan antarmuka ini. Yang pertama adalah mengontrol bagaimana objek Anda diserialisasikan atau dideserialisasi oleh XmlSerializer. Misalnya, Anda dapat memotong data menjadi byte alih-alih menyangga himpunan data besar, dan juga menghindari inflasi yang terjadi ketika data dikodekan menggunakan pengodean Base64. Untuk mengontrol serialisasi, terapkan ReadXml metode dan WriteXml untuk mengontrol XmlReader kelas dan XmlWriter yang digunakan untuk membaca dan menulis XML. Untuk contohnya, lihat Cara: Memotong Data Berseri.
Alasan kedua adalah untuk dapat mengontrol skema. Untuk mengaktifkan ini, Anda harus menerapkan XmlSchemaProviderAttribute ke jenis yang dapat diserialisasikan, dan menentukan nama anggota statis yang mengembalikan skema. XmlSchemaProviderAttribute Lihat contohnya.
Kelas yang mengimplementasikan antarmuka harus memiliki konstruktor tanpa parameter. Ini adalah persyaratan XmlSerializer kelas.
Metode
GetSchema() |
Metode ini dicadangkan dan tidak boleh digunakan. Saat menerapkan |
ReadXml(XmlReader) |
Menghasilkan objek dari representasi XML-nya. |
WriteXml(XmlWriter) |
Mengonversi objek menjadi representasi XML-nya. |