IXmlSerializable Arabirim
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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. Birincisi, nesnenizin tarafından nasıl seri hale getirilmeyi veya 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 ortaya çıkan enflasyonu önleyebilirsiniz. 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, seri hale getirilebilir türüne uygulamasını XmlSchemaProviderAttribute ve şemayı döndüren statik üyenin adını belirtmeniz gerekir. Örneğine XmlSchemaProviderAttribute bakın.
Arabirimini uygulayan bir sınıfın parametresiz oluşturucuya sahip olması gerekir. Bu, sınıfının bir gereksinimidir XmlSerializer .
Yöntemler
GetSchema() |
Bu yöntem ayrılmıştır ve kullanılmamalıdır. Arabirimi uygularken |
ReadXml(XmlReader) |
XML gösteriminden bir nesne oluşturur. |
WriteXml(XmlWriter) |
Bir nesneyi XML gösterimine dönüştürür. |