DataContractSerializer Klasse

Definition

Serialisiert oder deserialisiert mithilfe eines bereitgestellten Datenvertrags eine Instanz eines Typs in einen XML-Stream oder in ein XML-Dokument. Diese Klasse kann nicht vererbt werden.

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
Vererbung
DataContractSerializer

Beispiele

Der folgende Beispielcode zeigt einen Typen mit dem Namen Person, der vom DataContractSerializer serialisiert wird. Das DataContractAttribute-Attribut wird auf die Klasse angewendet, und das DataMemberAttribute-Attribut wird auf Member angewendet, um den DataContractSerializer anzuweisen, was serialisiert werden soll.

namespace DataContractSerializerExample
{
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Runtime.Serialization;
    using System.Xml;

    // You must apply a DataContractAttribute or SerializableAttribute
    // to a class to have it serialized by the DataContractSerializer.
    [DataContract(Name = "Customer", Namespace = "http://www.contoso.com")]
    class Person : IExtensibleDataObject
    {
        [DataMember()]
        public string FirstName;
        [DataMember]
        public string LastName;
        [DataMember()]
        public int ID;

        public Person(string newfName, string newLName, int newID)
        {
            FirstName = newfName;
            LastName = newLName;
            ID = newID;
        }

        private ExtensionDataObject extensionData_Value;

        public ExtensionDataObject ExtensionData
        {
            get
            {
                return extensionData_Value;
            }
            set
            {
                extensionData_Value = value;
            }
        }
    }

    public sealed class Test
    {
        private Test() { }

        public static void Main()
        {
            try
            {
                WriteObject("DataContractSerializerExample.xml");
                ReadObject("DataContractSerializerExample.xml");
            }

            catch (SerializationException serExc)
            {
                Console.WriteLine("Serialization Failed");
                Console.WriteLine(serExc.Message);
            }
            catch (Exception exc)
            {
                Console.WriteLine(
                "The serialization operation failed: {0} StackTrace: {1}",
                exc.Message, exc.StackTrace);
            }

            finally
            {
                Console.WriteLine("Press <Enter> to exit....");
                Console.ReadLine();
            }
        }

        public static void WriteObject(string fileName)
        {
            Console.WriteLine(
                "Creating a Person object and serializing it.");
            Person p1 = new Person("Zighetti", "Barbara", 101);
            FileStream writer = new FileStream(fileName, FileMode.Create);
            DataContractSerializer ser =
                new DataContractSerializer(typeof(Person));
            ser.WriteObject(writer, p1);
            writer.Close();
        }

        public static void ReadObject(string fileName)
        {
            Console.WriteLine("Deserializing an instance of the object.");
            FileStream fs = new FileStream(fileName,
            FileMode.Open);
            XmlDictionaryReader reader =
                XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas());
            DataContractSerializer ser = new DataContractSerializer(typeof(Person));

            // Deserialize the data and read it from the instance.
            Person deserializedPerson =
                (Person)ser.ReadObject(reader, true);
            reader.Close();
            fs.Close();
            Console.WriteLine(String.Format("{0} {1}, ID: {2}",
            deserializedPerson.FirstName, deserializedPerson.LastName,
            deserializedPerson.ID));
        }
    }
' You must apply a DataContractAttribute or SerializableAttribute
' to a class to have it serialized by the DataContractSerializer.
<DataContract(Name := "Customer", [Namespace] := "http://www.contoso.com")>  _
Class Person
    Implements IExtensibleDataObject
    <DataMember()>  _
    Public FirstName As String
    <DataMember()>  _
    Public LastName As String
    <DataMember()>  _
    Public ID As Integer
    
    Public Sub New(ByVal newfName As String, ByVal newLName As String, ByVal newID As Integer) 
        FirstName = newfName
        LastName = newLName
        ID = newID
    End Sub 
    
    Private extensionData_Value As ExtensionDataObject
    
    Public Property ExtensionData() As ExtensionDataObject Implements _
       IExtensibleDataObject.ExtensionData
        Get
            Return extensionData_Value
        End Get
        Set
            extensionData_Value = value
        End Set
    End Property
End Class 


NotInheritable Public Class Test
    
    Private Sub New() 
    
    End Sub 
     
    Public Shared Sub Main() 
        Try
            WriteObject("DataContractSerializerExample.xml")
            ReadObject("DataContractSerializerExample.xml")
        
        Catch serExc As SerializationException
            Console.WriteLine("Serialization Failed")
            Console.WriteLine(serExc.Message)
        Catch exc As Exception
            Console.WriteLine("The serialization operation failed: {0} StackTrace: {1}", exc.Message, exc.StackTrace)
        
        Finally
            Console.WriteLine("Press <Enter> to exit....")
            Console.ReadLine()
        End Try
    End Sub 
    
    Public Shared Sub WriteObject(ByVal fileName As String) 
        Console.WriteLine("Creating a Person object and serializing it.")
        Dim p1 As New Person("Zighetti", "Barbara", 101)
        Dim writer As New FileStream(fileName, FileMode.Create)
        Dim ser As New DataContractSerializer(GetType(Person))
        ser.WriteObject(writer, p1)
        writer.Close()
    End Sub 

    Public Shared Sub ReadObject(ByVal fileName As String) 
        Console.WriteLine("Deserializing an instance of the object.")
        Dim fs As New FileStream(fileName, FileMode.Open)
        Dim reader As XmlDictionaryReader = _
            XmlDictionaryReader.CreateTextReader(fs, New XmlDictionaryReaderQuotas())
        Dim ser As New DataContractSerializer(GetType(Person))
        
        ' Deserialize the data and read it from the instance.
        Dim deserializedPerson As Person = CType(ser.ReadObject(reader, True), Person)
        reader.Close()
        fs.Close()
        Console.WriteLine(String.Format("{0} {1}, ID: {2}", deserializedPerson.FirstName, deserializedPerson.LastName, deserializedPerson.ID))
    End Sub 
End Class

Hinweise

Verwenden Sie die DataContractSerializer-Klasse, um Instanzen eines Typs in einen XML-Stream oder ein XML-Dokument zu serialisieren oder zu deserialisieren. Sie können beispielsweise einen Typ mit dem Namen Person und Eigenschaften erstellen, die wichtige Daten wie Name und Adresse enthalten. Anschließend haben Sie die Möglichkeit, eine Instanz der Person-Klasse zu erstellen und zu bearbeiten. Sie können alle Eigenschaftswerte für den späteren Abruf in ein XML-Dokument oder für die sofortige Übertragung in einen XML-Stream schreiben. Am wichtigsten ist, dass die zum Serialisieren und Deserialisieren von Daten verwendet wird, die DataContractSerializer in WCF-Nachrichten (Windows Communication Foundation) gesendet werden. Wenden Sie das DataContractAttribute-Attribut auf Klassen und das DataMemberAttribute-Attribut auf Klassenmember an, um die zu serialisierenden Eigenschaften und Felder anzugeben.

Eine Liste der Typen, die serialisiert werden können, finden Sie unter Vom Data Contract Serializer unterstützte Typen.

Um den DataContractSerializer verwenden zu können, erstellen Sie zunächst eine Instanz einer Klasse und ein zum Schreiben bzw. Lesen des Formats geeignetes Objekt, z. B. eine Instanz des XmlDictionaryWriter-Objekts. Rufen Sie dann die WriteObject-Methode auf, um die Daten beizubehalten. Um Daten abzurufen, erstellen Sie ein zum Lesen des Datenformats geeignetes Objekt (z. B. einen XmlDictionaryReader für ein XML-Dokument), und rufen Sie die ReadObject-Methode auf.

Weitere Informationen zur Verwendung von DataContractSerializerfinden Sie unter Serialisierung und Deserialisierung.

Sie können den Typ eines Datenvertragserialisierers mithilfe des <dataContractSerializer-Elements> in einer Clientanwendungskonfigurationsdatei festlegen.

Vorbereiten von Klassen für die Serialisierung oder Deserialisierung

Der DataContractSerializer wird in Verbindung mit den Klassen DataContractAttribute und DataMemberAttribute verwendet. Um eine Klasse auf die Serialisierung vorzubereiten, wenden Sie das DataContractAttribute auf die Klasse an. Wenden Sie für jeden Member der Klasse, der zu serialisierende Daten zurückgibt, das DataMemberAttribute an. Sie können Felder und Eigenschaften unabhängig von den Zugriffsrechten serialisieren: privat, geschützt, intern, geschützt intern oder öffentlich.

Beispiel: Ihr Schema gibt einen Customer mit einer ID-Eigenschaft an. Ein Typ mit dem Namen Person und der Eigenschaft Name wird jedoch bereits in einer vorhandenen Anwendung verwendet. Um einen Typ zu erstellen, der dem Vertrag entspricht, wenden Sie zunächst das DataContractAttribute auf die Klasse an. Wenden Sie dann das DataMemberAttribute auf alle Felder oder Eigenschaften an, die Sie serialisieren möchten.

Hinweis

Sie können das DataMemberAttribute sowohl auf private als auch auf öffentliche Member anwenden.

Das abschließende Format des XML muss kein Text sein. Der DataContractSerializer schreibt die Daten als XML-Infoset, sodass Sie die Daten in ein beliebiges Format übertragen können, das von XmlReader und XmlWriter erkannt wird. Es wird empfohlen, zum Lesen und Schreiben die Klassen XmlDictionaryReader und XmlDictionaryWriter zu verwenden, da diese für die Arbeit mit dem DataContractSerializer optimiert sind.

Wenn Sie eine Klasse mit Feldern oder Eigenschaften erstellen, die vor der Serialisierung oder Deserialisierung aufgefüllt werden müssen, verwenden Sie Rückrufattribute, wie unter Versionstolerante Serialisierungsrückrufe beschrieben.

Hinzufügen zur Auflistung bekannter Typen

Bei der Serialisierung bzw. Deserialisierung eines Objekts muss der Typ dem DataContractSerializer bekannt sein. Erstellen Sie zunächst eine Instanz einer Klasse, die IEnumerable<T> implementiert (z. B. List<T>), und fügen Sie die bekannten Typen zu der Auflistung hinzu. Erstellen Sie dann eine Instanz des DataContractSerializer unter Verwendung einer der Überladungen, die IEnumerable<T> annimmt (z. B. DataContractSerializer(Type, IEnumerable<Type>)).

Hinweis

Im Gegensatz zu anderen primitiven Typen ist die DateTimeOffset Struktur standardmäßig kein bekannter Typ, daher muss sie manuell der Liste der bekannten Typen hinzugefügt werden (siehe Datenvertrag bekannte Typen).

Aufwärtskompatibilität

Der DataContractSerializer kann Datenverträge verarbeiten, die für zukünftige Versionen des Vertrags konzipiert wurden. Typen dieser Art implementieren die IExtensibleDataObject-Schnittstelle. Die Schnittstelle enthält die ExtensionData-Eigenschaft, die ein ExtensionDataObject-Objekt zurückgibt. Weitere Informationen finden Sie unter Aufwärtskompatible Datenverträge.

Ausführen im teilweise vertrauenswürdigen Modus

Beim Instanziieren des Zielobjekts während der Deserialisierung ruft der DataContractSerializer nicht den Konstruktor des Zielobjekts auf. Wenn Sie einen [DataContract] -Typ erstellen, auf den von teilweiser Vertrauenswürdigheit aus zugegriffen werden kann (d. h. er ist öffentlich und in einer Assembly, auf die das AllowPartiallyTrustedCallers Attribut angewendet wurde) und einige sicherheitsbezogene Aktionen ausführt, müssen Sie beachten, dass der Konstruktor nicht aufgerufen wird. Insbesondere die folgenden Techniken funktionieren nicht:

  • Sie können den teilweise vertrauenswürdigen Zugriff nicht einschränken, indem Sie den Konstruktor als intern oder privat definieren oder indem Sie einen LinkDemand zu dem Konstruktor hinzufügen. Beide Methoden sind bei der Deserialisierung unter teilweiser Vertrauenswürdigkeit unwirksam.

  • Wenn Sie die Klasse codieren, die angibt, dass der Konstruktor ausgeführt wurde, kann dies einen ungültigen internen Zustand der Klasse verursachen, der einen Angriffspunkt darstellt.

Konstruktoren

DataContractSerializer(Type)

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren.

DataContractSerializer(Type, DataContractSerializerSettings)

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs und Einstellungen zu serialisieren bzw. zu deserialisieren.

DataContractSerializer(Type, IEnumerable<Type>)

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs sowie eine Auflistung bekannter Typen, die im Objektdiagramm vorhanden sind, zu serialisieren bzw. zu deserialisieren.

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

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren. Diese Methode nennt zudem eine Liste bekannter Typen, die ggf. im Objektdiagramm enthalten sind, sowie die maximale Anzahl von zu serialisierenden Diagrammelementen und Parameter zum Ignorieren nicht erwarteter Daten. Weiterhin kennzeichnet sie, ob nicht standardmäßige XML-Konstrukte verwendet werden, um Objektverweisdaten im Diagramm beizubehalten, und ob ein Ersatzzeichen für eine benutzerdefinierte Serialisierung verwendet wird.

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

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren. Diese Methode nennt zudem eine Liste bekannter Typen, die ggf. im Objektdiagramm enthalten sind, sowie die maximale Anzahl von zu serialisierenden Diagrammelementen und Parameter zum Ignorieren nicht erwarteter Daten. Weiterhin kennzeichnet sie, ob nicht standardmäßige XML-Konstrukte verwendet werden, um Objektverweisdaten im Diagramm beizubehalten, und ob ein Ersatzzeichen für eine benutzerdefinierte Serialisierung verwendet wird. Sie enthält außerdem eine Alternative zur Zuordnung von xsi:type-Deklarationen zur Laufzeit.

DataContractSerializer(Type, String, String)

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs mithilfe des bereitgestellten XML-Stammelements und -Namespace zu serialisieren bzw. zu deserialisieren.

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

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren. Darüber hinaus gibt diese Methode das XML-Stammelement und den Namespace in zwei Zeichenfolgenparametern sowie eine Liste bekannter Typen, die in dem Objektdiagramm ggf. enthalten sind, an.

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

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren. Diese Methode nennt zudem eine Liste bekannter Typen, die ggf. im Objektdiagramm enthalten sind, sowie die maximale Anzahl von zu serialisierenden Diagrammelementen und Parameter zum Ignorieren nicht erwarteter Daten. Weiterhin kennzeichnet sie, ob nicht standardmäßige XML-Konstrukte verwendet werden, um Objektverweisdaten im Diagramm beizubehalten, und ob ein Ersatzzeichen für eine benutzerdefinierte Serialisierung verwendet wird. Sie enthält außerdem das XML-Element und den Namespace, die den Inhalt enthalten.

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

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren. Diese Methode nennt zudem eine Liste bekannter Typen, die ggf. im Objektdiagramm enthalten sind, sowie die maximale Anzahl von zu serialisierenden Diagrammelementen und Parameter zum Ignorieren nicht erwarteter Daten. Weiterhin kennzeichnet sie, ob nicht standardmäßige XML-Konstrukte verwendet werden, um Objektverweisdaten im Diagramm beizubehalten, und ob ein Ersatzzeichen für eine benutzerdefinierte Serialisierung verwendet wird. Das XML-Element und der XML-Namespace mit dem Inhalt sind ebenfalls angegeben. Die Methode enthält außerdem eine Alternative zur Zuordnung von xsi:type-Deklarationen zur Laufzeit.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString)

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs mithilfe des XML-Stammelements und -Namespaces zu serialisieren bzw. zu deserialisieren, das/der durch die Parameter des Typs XmlDictionaryString angegeben wird.

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

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren. Darüber hinaus gibt diese Methode das XML-Stammelement und den Namespace in zwei XmlDictionaryString-Parametern sowie eine Liste bekannter Typen, die in dem Objektdiagramm ggf. enthalten sind, an.

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

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren. Diese Methode nennt zudem eine Liste bekannter Typen, die ggf. im Objektdiagramm enthalten sind, sowie die maximale Anzahl von zu serialisierenden Diagrammelementen und Parameter zum Ignorieren nicht erwarteter Daten. Weiterhin kennzeichnet sie, ob nicht standardmäßige XML-Konstrukte verwendet werden, um Objektverweisdaten im Diagramm beizubehalten, und ob ein Ersatzzeichen für eine benutzerdefinierte Serialisierung verwendet wird. Sie enthält außerdem Parameter des Typs XmlDictionaryString, die das XML-Element und den Namespace angeben, die den Inhalt enthalten.

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

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren. Diese Methode nennt zudem eine Liste bekannter Typen, die ggf. im Objektdiagramm enthalten sind, sowie die maximale Anzahl von zu serialisierenden Diagrammelementen und Parameter zum Ignorieren nicht erwarteter Daten. Weiterhin kennzeichnet sie, ob nicht standardmäßige XML-Konstrukte verwendet werden, um Objektverweisdaten im Diagramm beizubehalten, und ob ein Ersatzzeichen für eine benutzerdefinierte Serialisierung verwendet wird. Parameter von XmlDictionaryString, die das XML-Element und den XML-Namespace mit dem Inhalt angeben, sind ebenfalls angegeben. Die Methode enthält außerdem eine Alternative zur Zuordnung von xsi:type-Deklarationen zur Laufzeit.

Eigenschaften

DataContractResolver

Ruft die Komponente für die dynamische Zuordnung von xsi:type-Deklarationen zu bekannten Vertragstypen ab.

DataContractSurrogate

Ruft einen Ersatzzeichentyp ab, der den Serialisierungs- oder Deserialisierungsprozess erweitern kann.

IgnoreExtensionDataObject

Ruft einen Wert ab, der angibt, ob die von einer Erweiterung der Klasse bereitgestellten Daten ignoriert werden sollen, wenn die Klasse serialisiert oder deserialisiert wird.

KnownTypes

Ruft eine Auflistung der Typen in einem Objektdiagramm ab, die mithilfe einer Instanz des DataContractSerializer-Objekts serialisiert werden.

MaxItemsInObjectGraph

Ruft die maximale Anzahl von Elementen in einem Objektdiagramm ab, die serialisiert oder deserialisiert werden.

PreserveObjectReferences

Ruft einen Wert ab, der angibt, ob zum Beibehalten von Objektverweisdaten nicht standardmäßige XML-Konstrukte verwendet werden sollen.

SerializeReadOnlyTypes

Ruft einen Wert ab, der angibt, ob schreibgeschützte Typen serialisiert werden.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsStartObject(XmlDictionaryReader)

Bestimmt, ob der XmlDictionaryReader auf einem Objekt positioniert ist, das deserialisiert werden kann.

IsStartObject(XmlReader)

Bestimmt, ob der XmlReader auf einem Objekt positioniert ist, das deserialisiert werden kann.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ReadObject(Stream)

Liest den XML-Stream oder das XML-Dokument mit einem Stream und gibt das deserialisierte Objekt zurück.

(Geerbt von XmlObjectSerializer)
ReadObject(XmlDictionaryReader)

Liest das XML-Dokument oder den XML-Stream mit einem XmlDictionaryReader und gibt das deserialisierte Objekt zurück.

(Geerbt von XmlObjectSerializer)
ReadObject(XmlDictionaryReader, Boolean)

Liest den XML-Stream mit einem XmlDictionaryReader und gibt das deserialisierte Objekt zurück. Zudem wird angegeben, ob vor dem Lesen des Objektwerts der Objektname überprüft wird.

ReadObject(XmlDictionaryReader, Boolean, DataContractResolver)

Liest ein XML-Dokument oder einen XML-Dokumentstream und gibt das deserialisierte Objekt zurück. Die Methode enthält einen Parameter, der angibt, ob der Objektname überprüft/validiert wird, sowie einen Resolver zum Zuordnen von xsi:type-Deklarationen zur Laufzeit.

ReadObject(XmlReader)

Liest den XML-Stream mit einem XmlReader und gibt das deserialisierte Objekt zurück.

ReadObject(XmlReader, Boolean)

Liest den XML-Stream mit einem XmlReader und gibt das deserialisierte Objekt zurück. Zudem wird angegeben, ob vor dem Lesen des Objektwerts der Objektname überprüft wird.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
WriteEndObject(XmlDictionaryWriter)

Schreibt das abschließende XML-Element mit einem XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Schreibt das abschließende XML-Element mit einem XmlWriter.

WriteObject(Stream, Object)

Schreibt den vollständigen Inhalt (Anfang, Inhalt und Ende) des Objekts in das XML-Dokument oder den XML-Stream mit dem angegebenen Stream.

(Geerbt von XmlObjectSerializer)
WriteObject(XmlDictionaryWriter, Object)

Schreibt den vollständigen Inhalt (Anfang, Inhalt und Ende) des Objekts in das XML-Dokument oder den XML-Stream mit dem angegebenen XmlDictionaryWriter.

(Geerbt von XmlObjectSerializer)
WriteObject(XmlDictionaryWriter, Object, DataContractResolver)

Schreibt alle Objektdaten (XML-Startelement, Inhalt und einschließendes Element) mit dem angegebenen XmlDictionaryWriter in ein XML-Dokument oder einen XML-Stream. Die Methode umfasst einen Resolver zum Zuordnen von xsi:type-Deklarationen zur Laufzeit.

WriteObject(XmlWriter, Object)

Schreibt alle Objektdaten (XML-Startelement, Inhalt und abschließendes Element) mit einem XmlWriter in ein XML-Dokument oder einen XML-Stream.

WriteObjectContent(XmlDictionaryWriter, Object)

Schreibt den XML-Inhalt mit einem XmlDictionaryWriter.

WriteObjectContent(XmlWriter, Object)

Schreibt den XML-Inhalt mit einem XmlWriter.

WriteStartObject(XmlDictionaryWriter, Object)

Schreibt das öffnende XML-Element mit einem XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object)

Schreibt das öffnende XML-Element mit einem XmlWriter.

Erweiterungsmethoden

GetSerializationSurrogateProvider(DataContractSerializer)

Gibt den niedrigen Serialisierungsanbieter für dieses Serialisierungsmodul zurück.

SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider)

Gibt den Ersatzserialisierungsanbieter für dieses DataContractSerializer an.

Gilt für:

Threadsicherheit

Instanzen dieser Klasse sind threadsicher, es sei denn, die Instanz wird mit einer Implementierung von IDataContractSurrogate oder DataContractResolververwendet.

Siehe auch