IXmlSerializable Arabirim

Tanım

XML serileştirme ve seri durumdan çıkarma için özel biçimlendirme sağlar.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Türetilmiş

Örnekler

Aşağıdaki örnek kod, özel bir alanı seri hale getiren arabiriminin IXmlSerializable uygulamasını gösterir.

#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);
    }
}

Açıklamalar

Bu arabirimi uygulamak için iki neden vardır. İlki, nesnenizin tarafından nasıl seri hale getirilip seri durumdan çıkarıldığını denetlemektir XmlSerializer. Örneğin, büyük veri kümelerini arabelleğe alma yerine verileri bayt olarak öbekleyebilir ve veriler Base64 kodlaması kullanılarak kodlandığında oluşan enflasyondan kaçınabilirsiniz. Serileştirmeyi denetlemek için, XML'yi ReadXml okumak ve WriteXml yazmak için kullanılan ve sınıflarını denetlemek XmlReader için ve XmlWriter yöntemlerini uygulayın. Bunun bir örneği için bkz . Nasıl yapılır: Öbek Serileştirilmiş Veriler.

İkinci neden şemayı denetleyebilmektir. Bunu etkinleştirmek için, serileştirilebilir türüne uygulamasını XmlSchemaProviderAttribute ve şemayı döndüren statik üyenin adını belirtmeniz gerekir. Örneğine XmlSchemaProviderAttribute bakın.

Arabirimi uygulayan bir sınıfın parametresiz bir oluşturucuya sahip olması gerekir. Bu, sınıfın XmlSerializer bir gereksinimidir.

Yöntemler

GetSchema()

Bu yöntem ayrılmıştır ve kullanılmamalıdır. Arabirimi uygularkenIXmlSerializable, bu yöntemden (NothingVisual Basic içinde) döndürmelisiniz null ve bunun yerine, özel bir şema belirtilmesi gerekiyorsa sınıfına XmlSchemaProviderAttribute uygulayın.

ReadXml(XmlReader)

XML gösteriminden bir nesne oluşturur.

WriteXml(XmlWriter)

Nesneyi XML gösterimine dönüştürür.

Şunlara uygulanır

Ayrıca bkz.