DataContractSerializer Klasse

Definition

Serialisiert und deserialisiert eine Instanz eines Typs in einen XML-Datenstrom oder -dokument mithilfe eines bereitgestellten Datenvertrags. 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

Hinweise

Verwenden Sie die DataContractSerializer Klasse zum Serialisieren und Deserialisieren von Instanzen eines Typs in einen XML-Datenstrom oder -Dokument. Sie können z. B. einen Typ Person mit Eigenschaften erstellen, die wesentliche Daten enthalten, z. B. einen Namen und eine Adresse. Anschließend können Sie eine Instanz der Person Klasse erstellen und bearbeiten und alle zugehörigen Eigenschaftswerte in einem XML-Dokument für den späteren Abruf oder in einem XML-Datenstrom für den sofortigen Transport schreiben. Am wichtigsten ist es, dass DataContractSerializer zur Serialisierung und Deserialisierung von Daten verwendet wird, die in WCF-Nachrichten (Windows Communication Foundation) gesendet werden. Wenden Sie das DataContractAttribute-Attribut auf Klassen und das DataMemberAttribute-Attribut auf Klassenmitglieder an, um Eigenschaften und Felder anzugeben, die serialisiert werden.

Eine Liste der Typen, die serialisiert werden können, finden Sie unter Typen, die vom Serialisierer für den Datenvertrag unterstützt werden.

Um das DataContractSerializerFormat zu verwenden, erstellen Sie zuerst eine Instanz einer Klasse und ein Objekt, das zum Schreiben oder Lesen des Formats geeignet ist, z. B. eine Instanz der XmlDictionaryWriter. Rufen Sie dann die WriteObject Methode auf, um die Daten beizubehalten. Um Daten abzurufen, erstellen Sie ein Objekt, das zum Lesen des Datenformats (z. B. ein XmlDictionaryReader XML-Dokument) geeignet ist, und rufen Sie die ReadObject Methode auf.

Weitere Informationen zur Verwendung von DataContractSerializerSerialisierung und Deserialisierung finden Sie unter "Serialisierung" und "Deserialisierung".

Sie können den Typ eines Datenvertrag-Serializers mithilfe des <dataContractSerializer-Elements> in einer Client-Anwendungskonfigurations-Datei festlegen.

Vorbereiten von Klassen für die Serialisierung oder Deserialisierung

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

Ihr Schema gibt z. B. eine Customer mit einer ID-Eigenschaft an, aber Sie verfügen bereits über eine vorhandene Anwendung, die einen Typ namens Person mit einer Name-Eigenschaft verwendet. Um einen Typ zu erstellen, der dem Vertrag entspricht, wenden Sie zuerst die DataContractAttribute Klasse an. Wenden Sie dann DataMemberAttribute auf jedes Feld oder jede Eigenschaft an, die Sie serialisieren möchten.

Note

Sie können dies DataMemberAttribute sowohl für private als auch für öffentliche Mitglieder anwenden.

Das endgültige Format der XML muss kein Text sein. Stattdessen schreibt die DataContractSerializer die Daten als XML-Infoset, mit dem Sie die Daten in ein beliebiges Format schreiben können, das von dem XmlReader und XmlWriter erkannt wird. Es wird empfohlen, die Klassen XmlDictionaryReader und XmlDictionaryWriter zum Lesen und Schreiben zu verwenden, da beide für die Arbeit mit DataContractSerializer optimiert sind.

Wenn Sie eine Klasse erstellen, die Felder oder Eigenschaften enthält, die vor dem Auftreten der Serialisierung oder Deserialisierung aufgefüllt werden müssen, verwenden Sie Rückrufattribute, wie in Version-Tolerant Serialisierungsrückrufen beschrieben.

Zur Auflistung bekannter Typen hinzufügen

Beim Serialisieren oder Deserialisieren eines Objekts ist es erforderlich, dass der Typ für das DataContractSerializerObjekt "bekannt" ist. Erstellen Sie zunächst eine Instanz einer Klasse, die IEnumerable<T> implementiert (z. B. List<T>), und fügen Sie die bekannten Typen zur Auflistung hinzu. Erstellen Sie dann eine Instanz von DataContractSerializer, indem Sie eine der Überladungen verwenden, die IEnumerable<T> übernimmt (z. B. DataContractSerializer(Type, IEnumerable<Type>)).

Note

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

Vorwärtskompatibilität

Die DataContractSerializer versteht Datenverträge, die so konzipiert wurden, dass sie mit zukünftigen Versionen des Vertrags kompatibel sind. Solche Typen implementieren die IExtensibleDataObject Schnittstelle. Die Schnittstelle verfügt über die ExtensionData Eigenschaft, die ein ExtensionDataObject Objekt zurückgibt. Weitere Informationen finden Sie unter Forward-Compatible Datenverträge.

Konstruktoren

Name Beschreibung
DataContractSerializer(Type, DataContractSerializerSettings)

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs und der angegebenen Einstellungen zu serialisieren oder deserialisieren.

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

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs zu serialisieren oder deserialisieren. Diese Methode gibt auch eine Liste bekannter Typen an, die im Objektdiagramm vorhanden sein können, die maximale Anzahl von Diagrammelementen, die serialisiert werden sollen, Parameter, um unerwartete Daten zu ignorieren, ob nicht standardmäßige XML-Konstrukte zum Beibehalten von Objektverweisdaten im Diagramm, eine Ersatz für die benutzerdefinierte Serialisierung und eine Alternative für Zuordnungsdeklarationen xsi:type zur Laufzeit verwendet werden sollen.

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

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs zu serialisieren oder deserialisieren. Diese Methode gibt auch eine Liste bekannter Typen an, die im Objektdiagramm vorhanden sein können, die maximale Anzahl von Diagrammelementen, die serialisiert werden sollen, Parameter, um unerwartete Daten zu ignorieren, ob nicht standardmäßige XML-Konstrukte zum Beibehalten von Objektverweisdaten im Diagramm und ein Ersatz für die benutzerdefinierte Serialisierung verwendet werden sollen.

DataContractSerializer(Type, IEnumerable<Type>)

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs zu serialisieren oder deserialisieren, und eine Auflistung bekannter Typen, die im Objektdiagramm vorhanden sein können.

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

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs zu serialisieren oder deserialisieren. Diese Methode gibt auch eine Liste bekannter Typen an, die im Objektdiagramm vorhanden sein können, die maximale Anzahl von Diagrammelementen, die serialisiert werden sollen, Parameter, um unerwartete Daten zu ignorieren, ob nicht standardmäßige XML-Konstrukte verwendet werden, um Objektverweisdaten im Diagramm beizubehalten, eine Ersatz für die benutzerdefinierte Serialisierung, das XML-Element und den Namespace, das den Inhalt enthält, und eine Alternative zum Zuordnen xsi:type von Deklarationen zur Laufzeit.

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

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs zu serialisieren oder deserialisieren. Diese Methode gibt auch eine Liste bekannter Typen an, die im Objektdiagramm vorhanden sein können, die maximale Anzahl von Diagrammelementen, die serialisiert werden sollen, Parameter, um unerwartete Daten zu ignorieren, ob nicht standardmäßige XML-Konstrukte zum Beibehalten von Objektverweisdaten im Diagramm, ein Ersatz für die benutzerdefinierte Serialisierung und das XML-Element und den Namespace verwendet werden sollen, die den Inhalt enthalten.

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

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs zu serialisieren oder deserialisieren. Diese Methode gibt auch das XML-Stammelement und den Namespace in zwei Zeichenfolgenparametern sowie eine Liste bekannter Typen an, die im Objektdiagramm vorhanden sein können.

DataContractSerializer(Type, String, String)

Initialisiert eine neue Instanz der DataContractSerializer Klasse zum Serialisieren oder Deserialisieren eines Objekts des angegebenen Typs mithilfe des bereitgestellten XML-Stammelements und Namespaces.

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

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs zu serialisieren oder deserialisieren. Diese Methode gibt auch eine Liste bekannter Typen an, die im Objektdiagramm vorhanden sein können, die maximale Anzahl von Diagrammelementen, die serialisiert werden sollen, Parameter, um unerwartete Daten zu ignorieren, ob nicht standardmäßige XML-Konstrukte zum Beibehalten von Objektverweisdaten im Diagramm verwendet werden, eine Ersatz für die benutzerdefinierte Serialisierung, Parameter, die XmlDictionaryString das XML-Element und den Namespace angeben, die den Inhalt enthalten, und eine Alternative zum Zuordnen xsi:type von Deklarationen zur Laufzeit.

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

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs zu serialisieren oder deserialisieren. Diese Methode gibt auch eine Liste bekannter Typen an, die im Objektdiagramm vorhanden sein können, die maximale Anzahl von Diagrammelementen, die serialisiert werden sollen, Parameter, um unerwartete Daten zu ignorieren, ob nicht standardmäßige XML-Konstrukte zum Beibehalten von Objektverweisdaten im Diagramm, eine Ersatz für die benutzerdefinierte Serialisierung und Parameter verwendet werden, die XmlDictionaryString das XML-Element und den Namespace angeben, die den Inhalt enthalten.

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

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs zu serialisieren oder deserialisieren. Diese Methode gibt auch das XML-Stammelement und den Namespace in zwei XmlDictionaryString Parametern sowie eine Liste bekannter Typen an, die im Objektdiagramm vorhanden sein können.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString)

Initialisiert eine neue Instanz der DataContractSerializer Klasse zum Serialisieren oder Deserialisieren eines Objekts des angegebenen Typs mithilfe des XML-Stammelements und namespaces, das über die Parameter des Typs XmlDictionaryStringangegeben wird.

DataContractSerializer(Type)

Initialisiert eine neue Instanz der DataContractSerializer Klasse, um ein Objekt des angegebenen Typs zu serialisieren oder deserialisieren.

Eigenschaften

Name Beschreibung
DataContractResolver

Ruft die Komponente ab, die zum dynamischen Zuordnen xsi:type von Deklarationen zu bekannten Vertragstypen verwendet wird.

DataContractSurrogate

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

IgnoreExtensionDataObject

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

KnownTypes

Ruft eine Auflistung von Typen ab, die mithilfe dieser Instanz des DataContractSerializerObjekts diagramms serialisiert werden können.

MaxItemsInObjectGraph

Ruft die maximale Anzahl von Elementen in einem Objektdiagramm ab, um sie zu serialisieren oder deserialisieren.

PreserveObjectReferences

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

SerializeReadOnlyTypes

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

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
IsStartObject(XmlDictionaryReader)

Bestimmt, ob das XmlDictionaryReader Objekt in einem Objekt positioniert wird, das deserialisiert werden kann.

IsStartObject(XmlReader)

Bestimmt, ob das XmlReader Objekt in einem Objekt positioniert wird, das deserialisiert werden kann.

MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ReadObject(Stream)

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

(Geerbt von XmlObjectSerializer)
ReadObject(XmlDictionaryReader, Boolean, DataContractResolver)

Liest ein XML-Dokument oder einen Dokumentdatenstrom und gibt das deserialisierte Objekt zurück. Die Methode enthält einen Parameter, um anzugeben, ob der Objektname überprüft wird, und ein Resolver für die Zuordnung xsi:type von Deklarationen zur Laufzeit.

ReadObject(XmlDictionaryReader, Boolean)

Liest den XML-Datenstrom mit einem XmlDictionaryReader und gibt das deserialisierte Objekt zurück und gibt außerdem an, ob eine Überprüfung vorgenommen wird, um den Objektnamen vor dem Lesen des Werts zu überprüfen.

ReadObject(XmlDictionaryReader)

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

(Geerbt von XmlObjectSerializer)
ReadObject(XmlReader, Boolean)

Liest den XML-Datenstrom mit einem XmlReader und gibt das deserialisierte Objekt zurück und gibt außerdem an, ob eine Überprüfung vorgenommen wird, um den Objektnamen vor dem Lesen des Werts zu überprüfen.

ReadObject(XmlReader)

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

ToString()

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

(Geerbt von Object)
WriteEndObject(XmlDictionaryWriter)

Schreibt das schließende XML-Element mithilfe eines XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Schreibt das schließende XML-Element mithilfe eines XmlWriter.

WriteObject(Stream, Object)

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

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

Schreibt alle Objektdaten (Start-XML-Element, Inhalt und eingeschlossenes Element) in ein XML-Dokument oder -Stream mit dem angegebenen XmlDictionaryWriter. Die Methode enthält einen Resolver für die Zuordnung xsi:type von Deklarationen zur Laufzeit.

WriteObject(XmlDictionaryWriter, Object)

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

(Geerbt von XmlObjectSerializer)
WriteObject(XmlWriter, Object)

Schreibt alle Objektdaten (Start-XML-Element, Inhalt und schließende Element) in ein XML-Dokument oder -Datenstrom mit einem XmlWriter.

WriteObjectContent(XmlDictionaryWriter, Object)

Schreibt den XML-Inhalt mithilfe eines XmlDictionaryWriter.

WriteObjectContent(XmlWriter, Object)

Schreibt den XML-Inhalt mithilfe eines XmlWriter.

WriteStartObject(XmlDictionaryWriter, Object)

Schreibt das öffnende XML-Element mithilfe eines XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object)

Schreibt das öffnende XML-Element mithilfe eines XmlWriter.

Erweiterungsmethoden

Name Beschreibung
GetSerializationSurrogateProvider(DataContractSerializer)

Gibt den Ersatz serialisierungsanbieter für diesen Serialisierer zurück.

SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider)

Gibt einen Ersatz serialisierungsanbieter für diese DataContractSerializeran.

Gilt für:

Threadsicherheit

Instanzen dieser Klasse sind threadsicher, es sei denn, die Instanz wird mit einer Implementierung der IDataContractSurrogate Oder verwendet DataContractResolver.

Weitere Informationen