XmlObjectSerializer Klasa

Definicja

Udostępnia klasę bazową używaną do serializacji obiektów jako strumieni XML lub dokumentów. Ta klasa jest abstrakcyjna.

public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
Dziedziczenie
XmlObjectSerializer
Pochodne

Przykłady

W poniższym przykładzie przedstawiono metodę o nazwie WriteObjectWithInstance , która zawiera parametr XmlObjectSerializer jako parametr. Metoda serializuje obiekt przy użyciu DataContractSerializer metody lub NetDataContractSerializer przez wywołanie WriteObject metody .

public class Test
{
    private void WriteObjectWithInstance(XmlObjectSerializer xm, Company graph,
       string fileName)
    {
        // Use either the XmlDataContractSerializer or NetDataContractSerializer,
        // or any other class that inherits from XmlObjectSerializer to write with.
        Console.WriteLine(xm.GetType());
        FileStream fs = new FileStream(fileName, FileMode.Create);
        XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs);
        xm.WriteObject(writer, graph);
        Console.WriteLine("Done writing {0}", fileName);
    }

    private void Run()
    {
        // Create the object to write to a file.
        Company graph = new Company();
        graph.Name = "cohowinery.com";

        // Create a DataContractSerializer and a NetDataContractSerializer.
        // Pass either one to the WriteObjectWithInstance method.
        DataContractSerializer dcs = new DataContractSerializer(typeof(Company));
        NetDataContractSerializer ndcs = new NetDataContractSerializer();
        WriteObjectWithInstance(dcs, graph, @"datacontract.xml");
        WriteObjectWithInstance(ndcs, graph, @"netDatacontract.xml");
    }

    [DataContract]
    public class Company
    {
        [DataMember]
        public string Name;
    }

    static void Main()
    {
        try
        {
            Console.WriteLine("Starting");
            Test t = new Test();
            t.Run();
            Console.WriteLine("Done");
            Console.ReadLine();
        }

        catch (InvalidDataContractException iExc)
        {
            Console.WriteLine("You have an invalid data contract: ");
            Console.WriteLine(iExc.Message);
            Console.ReadLine();
        }

        catch (SerializationException serExc)
        {
            Console.WriteLine("There is a problem with the instance:");
            Console.WriteLine(serExc.Message);
            Console.ReadLine();
        }

        catch (QuotaExceededException qExc)
        {
            Console.WriteLine("The quota has been exceeded");
            Console.WriteLine(qExc.Message);
            Console.ReadLine();
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc.Message);
            Console.WriteLine(exc.ToString());
            Console.ReadLine();
        }
    }
Public Class Test
    
    Private Sub WriteObjectWithInstance(ByVal xm As XmlObjectSerializer, _
      ByVal graph As Company, ByVal fileName As String) 
        ' Use either the XmlDataContractSerializer or NetDataContractSerializer,
        ' or any other class that inherits from XmlObjectSerializer to write with.
        Console.WriteLine(xm.GetType())
        Dim fs As New FileStream(fileName, FileMode.Create)
        Dim writer As XmlDictionaryWriter = XmlDictionaryWriter.CreateTextWriter(fs)
        xm.WriteObject(writer, graph)
        Console.WriteLine("Done writing {0}", fileName)
    
    End Sub 
    
    
    Private Sub Run() 
        ' Create the object to write to a file.
        Dim graph As New Company()
        graph.Name = "cohowinery.com"
        
        ' Create a DataContractSerializer and a NetDataContractSerializer.
        ' Pass either one to the WriteObjectWithInstance method.
        Dim dcs As New DataContractSerializer(GetType(Company))
        Dim ndcs As New NetDataContractSerializer()
        WriteObjectWithInstance(dcs, graph, "datacontract.xml")
        WriteObjectWithInstance(ndcs, graph, "netDatacontract.xml")
    
    End Sub 
    
    <DataContract()>  _
    Public Class Company
        <DataMember()>  _
        Public Name As String
    End Class 
    
    
    Shared Sub Main() 
        Try
            Console.WriteLine("Starting")
            Dim t As New Test()
            t.Run()
            Console.WriteLine("Done")
            Console.ReadLine()
        
        Catch iExc As InvalidDataContractException
            Console.WriteLine("You have an invalid data contract: ")
            Console.WriteLine(iExc.Message)
            Console.ReadLine()
        
        Catch serExc As SerializationException
            Console.WriteLine("There is a problem with the instance:")
            Console.WriteLine(serExc.Message)
            Console.ReadLine()
        
        Catch qExc As QuotaExceededException
            Console.WriteLine("The quota has been exceeded")
            Console.WriteLine(qExc.Message)
            Console.ReadLine()
        Catch exc As Exception
            Console.WriteLine(exc.Message)
            Console.WriteLine(exc.ToString())
            Console.ReadLine()
        End Try
    
    End Sub 
End Class

Uwagi

Rozszerz element , XmlObjectSerializer aby utworzyć własny serializator, aby serializować i deserializować obiekty. DataContractSerializer Zarówno klasa, jak i NetDataContractSerializer klasa dziedziczą z XmlObjectSerializer klasy i są używane do serializacji i deserializacji obiektów zgodnych z regułami kontraktu danych (obiektów utworzonych przy użyciu DataContractAttribute obiektów i DataMemberAttribute).

Notatki dotyczące implementowania

Po dziedziczeniu z XmlObjectSerializerprogramu należy zastąpić następujące elementy członkowskie: WriteStartObject(XmlDictionaryWriter, Object), , WriteObjectContent(XmlDictionaryWriter, Object)WriteEndObject(XmlDictionaryWriter). IsStartObject Ponadto metody i ReadObject muszą być implementowane do odczytywania i deserializacji.

Konstruktory

Nazwa Opis
XmlObjectSerializer()

Inicjuje nowe wystąpienie klasy XmlObjectSerializer.

Metody

Nazwa Opis
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
IsStartObject(XmlDictionaryReader)

Pobiera wartość określającą, czy XmlDictionaryReader element jest umieszczony nad elementem XML, który można odczytać.

IsStartObject(XmlReader)

Pobiera wartość określającą, czy XmlReader element jest umieszczony nad elementem XML, który można odczytać.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
ReadObject(Stream)

Odczytuje strumień XML lub dokument za pomocą obiektu Stream i zwraca zdeserializowany obiekt.

ReadObject(XmlDictionaryReader, Boolean)

Odczytuje strumień XML lub dokument z obiektem XmlDictionaryReader i zwraca zdeserializowany obiekt. Umożliwia również określenie, czy serializator może odczytać dane przed podjęciem próby odczytania go.

ReadObject(XmlDictionaryReader)

Odczytuje dokument XML lub strumień za pomocą elementu XmlDictionaryReader i zwraca zdeserializowany obiekt.

ReadObject(XmlReader, Boolean)

Odczytuje dokument XML lub strumień za pomocą XmlReader obiektu i zwraca zdeserializowany obiekt. Umożliwia również określenie, czy serializator może odczytać dane przed podjęciem próby odczytania go.

ReadObject(XmlReader)

Odczytuje dokument XML lub strumień za pomocą elementu XmlReader i zwraca zdeserializowany obiekt.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
WriteEndObject(XmlDictionaryWriter)

Zapisuje koniec danych obiektu jako zamykający element XML w dokumencie XML lub strumieniu za pomocą elementu XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Zapisuje koniec danych obiektu jako zamykający element XML w dokumencie XML lub strumieniu za pomocą elementu XmlWriter.

WriteObject(Stream, Object)

Zapisuje pełną zawartość (początek, zawartość i koniec) obiektu do dokumentu XML lub strumienia o określonym obiekcie Stream.

WriteObject(XmlDictionaryWriter, Object)

Zapisuje pełną zawartość (początek, zawartość i koniec) obiektu do dokumentu XML lub strumienia o określonym obiekcie XmlDictionaryWriter.

WriteObject(XmlWriter, Object)

Zapisuje pełną zawartość (początek, zawartość i koniec) obiektu do dokumentu XML lub strumienia o określonym obiekcie XmlWriter.

WriteObjectContent(XmlDictionaryWriter, Object)

Zapisuje tylko zawartość obiektu w dokumencie XML lub strumieniu przy użyciu określonego XmlDictionaryWriterelementu .

WriteObjectContent(XmlWriter, Object)

Zapisuje tylko zawartość obiektu w dokumencie XML lub strumieniu o określonym XmlWriterobiekcie .

WriteStartObject(XmlDictionaryWriter, Object)

Zapisuje początek danych obiektu jako otwierający element XML przy użyciu określonego XmlDictionaryWriterelementu .

WriteStartObject(XmlWriter, Object)

Zapisuje początek danych obiektu jako otwierający element XML przy użyciu określonego XmlWriterelementu .

Dotyczy

Zobacz też