DataContractSerializer DataContractSerializer DataContractSerializer DataContractSerializer Class

Definition

Serialisiert oder deserialisiert mithilfe eines bereitgestellten Datenvertrags eine Instanz eines Typs in einen XML-Stream oder in ein XML-Dokument.Serializes and deserializes an instance of a type into an XML stream or document using a supplied data contract. Diese Klasse kann nicht vererbt werden.This class cannot be inherited.

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
DataContractSerializerDataContractSerializerDataContractSerializerDataContractSerializer

Beispiele

Der folgende Beispielcode zeigt einen Typen mit dem Namen Person, der vom DataContractSerializer serialisiert wird.The following example code shows a type named Person that is serialized by the DataContractSerializer. Das DataContractAttribute-Attribut wird auf die Klasse angewendet, und das DataMemberAttribute-Attribut wird auf Member angewendet, um den DataContractSerializer anzuweisen, was serialisiert werden soll.The DataContractAttribute attribute is applied to the class, and the DataMemberAttribute is applied to members to instruct the DataContractSerializer what to serialize.

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.Use the DataContractSerializer class to serialize and deserialize instances of a type into an XML stream or document. Sie können beispielsweise einen Typ mit dem Namen Person und Eigenschaften erstellen, die wichtige Daten wie Name und Adresse enthalten.For example, you can create a type named Person with properties that contain essential data, such as a name and address. 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.You can then create and manipulate an instance of the Person class and write all of its property values in an XML document for later retrieval, or in an XML stream for immediate transport. Am wichtigsten ist, die DataContractSerializer zum Serialisieren und Deserialisieren von Daten, die in Windows Communication Foundation (WCF)-Nachrichten gesendet werden.Most important, the DataContractSerializer is used to serialize and deserialize data sent in Windows Communication Foundation (WCF) messages. Wenden Sie das DataContractAttribute-Attribut auf Klassen und das DataMemberAttribute-Attribut auf Klassenmember an, um die zu serialisierenden Eigenschaften und Felder anzugeben.Apply the DataContractAttribute attribute to classes, and the DataMemberAttribute attribute to class members to specify properties and fields that are serialized.

Eine Liste der Typen, die serialisiert werden kann, finden Sie unter Types Supported by the Data Contract Serializer.For a list of types that can be serialized, see Types Supported by the Data Contract Serializer.

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.To use the DataContractSerializer, first create an instance of a class and an object appropriate to writing or reading the format; for example, an instance of the XmlDictionaryWriter. Rufen Sie dann die WriteObject-Methode auf, um die Daten beizubehalten.Then call the WriteObject method to persist the data. 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.To retrieve data, create an object appropriate to reading the data format (such as an XmlDictionaryReader for an XML document) and call the ReadObject method.

Weitere Informationen zur Verwendung der DataContractSerializer, finden Sie unter Serialisierung und Deserialisierung.For more information about using the DataContractSerializer, see Serialization and Deserialization.

Sie können festlegen, den Typ des datenvertragsserialisierers mithilfe der <DataContractSerializer> Element in einer Konfigurationsdatei der Clientanwendung.You can set the type of a data contract serializer using the <dataContractSerializer> element in a client application configuration file.

Vorbereiten von Klassen für die Serialisierung oder DeserialisierungPreparing Classes for Serialization or Deserialization

Der DataContractSerializer wird in Verbindung mit den Klassen DataContractAttribute und DataMemberAttribute verwendet.The DataContractSerializer is used in combination with the DataContractAttribute and DataMemberAttribute classes. Um eine Klasse auf die Serialisierung vorzubereiten, wenden Sie das DataContractAttribute auf die Klasse an.To prepare a class for serialization, apply the DataContractAttribute to the class. Wenden Sie für jeden Member der Klasse, der zu serialisierende Daten zurückgibt, das DataMemberAttribute an.For each member of the class that returns data that you want to serialize, apply the DataMemberAttribute. Sie können Felder und Eigenschaften unabhängig von den Zugriffsrechten serialisieren: privat, geschützt, intern, geschützt intern oder öffentlich.You can serialize fields and properties, regardless of accessibility: private, protected, internal, protected internal, or public.

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.For example, your schema specifies a Customer with an ID property, but you already have an existing application that uses a type named Person with a Name property. Um einen Typ zu erstellen, der dem Vertrag entspricht, wenden Sie zunächst das DataContractAttribute auf die Klasse an.To create a type that conforms to the contract, first apply the DataContractAttribute to the class. Wenden Sie dann das DataMemberAttribute auf alle Felder oder Eigenschaften an, die Sie serialisieren möchten.Then apply the DataMemberAttribute to every field or property that you want to serialize.

Hinweis

Sie können das DataMemberAttribute sowohl auf private als auch auf öffentliche Member anwenden.You can apply the DataMemberAttribute to both private and public members.

Das abschließende Format des XML muss kein Text sein.The final format of the XML need not be text. 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.Instead, the DataContractSerializer writes the data as an XML infoset, which allows you to write the data to any format recognized by the XmlReader and XmlWriter. 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.It is recommended that you use the XmlDictionaryReader and XmlDictionaryWriter classes to read and write, because both are optimized to work with the DataContractSerializer.

Wenn Sie erstellen eine Klasse mit Feldern oder Eigenschaften, die vor der Serialisierung aufgefüllt werden müssen oder Deserialisierung auftritt, können Sie rückrufattribute verwenden, wie in beschrieben versionstolerante Serialisierungsrückrufe.If you are creating a class that has fields or properties that must be populated before the serialization or deserialization occurs, use callback attributes, as described in Version-Tolerant Serialization Callbacks.

Hinzufügen zur Auflistung bekannter TypenAdding to the Collection of Known Types

Bei der Serialisierung bzw. Deserialisierung eines Objekts muss der Typ dem DataContractSerializer bekannt sein.When serializing or deserializing an object, it is required that the type is "known" to the DataContractSerializer. 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.Begin by creating an instance of a class that implements IEnumerable<T> (such as List<T>) and adding the known types to the collection. Erstellen Sie dann eine Instanz des DataContractSerializer unter Verwendung einer der Überladungen, die IEnumerable<T> annimmt (z. B. DataContractSerializer(Type, IEnumerable<Type>)).Then create an instance of the DataContractSerializer using one of the overloads that takes the IEnumerable<T> (for example, DataContractSerializer(Type, IEnumerable<Type>).

Hinweis

Im Gegensatz zu anderen primitiven Typen ist die DateTimeOffset Struktur ist nicht standardmäßig einen bekannten Typ, damit sie der Liste bekannter Typen manuell hinzugefügt werden muss (siehe Data Contract Known Types).Unlike other primitive types, the DateTimeOffset structure is not a known type by default, so it must be manually added to the list of known types (see Data Contract Known Types).

AufwärtskompatibilitätForward Compatibility

Der DataContractSerializer kann Datenverträge verarbeiten, die für zukünftige Versionen des Vertrags konzipiert wurden.The DataContractSerializer understands data contracts that have been designed to be compatible with future versions of the contract. Typen dieser Art implementieren die IExtensibleDataObject-Schnittstelle.Such types implement the IExtensibleDataObject interface. Die Schnittstelle enthält die ExtensionData-Eigenschaft, die ein ExtensionDataObject-Objekt zurückgibt.The interface features the ExtensionData property that returns an ExtensionDataObject object. Weitere Informationen finden Sie unter Aufwärtskompatible Datenverträge.For more information, see Forward-Compatible Data Contracts.

Ausführen im teilweise vertrauenswürdigen ModusRunning under Partial Trust

Beim Instanziieren des Zielobjekts während der Deserialisierung ruft der DataContractSerializer nicht den Konstruktor des Zielobjekts auf.When instantiating the target object during deserialization, the DataContractSerializer does not call the constructor of the target object. Beim Erstellen einer [DataContract] Typ, der von teilweise vertrauenswürdigem Code zugegriffen werden kann (d. h. er ist öffentlich und in einer Assembly, bei dem die AllowPartiallyTrustedCallers -Attribut) und der einige sicherheitsrelevante Aktionen durchführt, müssen Sie berücksichtigen, der Konstruktor wird nicht aufgerufen.If you author a [DataContract] type that is accessible from partial trust (that is, it is public and in an assembly that has the AllowPartiallyTrustedCallers attribute applied) and that performs some security-related actions, you must be aware that the constructor is not called. Insbesondere die folgenden Techniken funktionieren nicht:In particular, the following techniques do not work:

  • 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.If you try to restrict partial trust access by making the constructor internal or private, or by adding a LinkDemand to the constructor -- neither of these have any effect during deserialization under partial trust.

  • 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.If you code the class that assumes the constructor has run, the class may get into an invalid internal state that is exploitable.

Konstruktoren

DataContractSerializer(Type) DataContractSerializer(Type) DataContractSerializer(Type) DataContractSerializer(Type)

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type.

DataContractSerializer(Type, DataContractSerializerSettings) DataContractSerializer(Type, DataContractSerializerSettings) DataContractSerializer(Type, DataContractSerializerSettings) DataContractSerializer(Type, DataContractSerializerSettings)

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs und Einstellungen zu serialisieren bzw. zu deserialisieren.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type and settings.

DataContractSerializer(Type, IEnumerable<Type>) DataContractSerializer(Type, IEnumerable<Type>) DataContractSerializer(Type, IEnumerable<Type>) 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.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type, and a collection of known types that may be present in the object graph.

DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) 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.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type. 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.This method also specifies a list of known types that may be present in the object graph, the maximum number of graph items to serialize, parameters to ignore unexpected data, whether to use non-standard XML constructs to preserve object reference data in the graph, and a surrogate for custom serialization.

DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) 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.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type. 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.This method also specifies a list of known types that may be present in the object graph, the maximum number of graph items to serialize, parameters to ignore unexpected data, whether to use non-standard XML constructs to preserve object reference data in the graph, a surrogate for custom serialization, and an alternative for mapping xsi:type declarations at run time.

DataContractSerializer(Type, String, String) DataContractSerializer(Type, String, String) DataContractSerializer(Type, String, String) 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.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type using the supplied XML root element and namespace.

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

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type. 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.This method also specifies the root XML element and namespace in two string parameters as well as a list of known types that may be present in the object graph.

DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) 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.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type. 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.This method also specifies a list of known types that may be present in the object graph, the maximum number of graph items to serialize, parameters to ignore unexpected data, whether to use non-standard XML constructs to preserve object reference data in the graph, a surrogate for custom serialization, and the XML element and namespace that contain the content.

DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) 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.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type. 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.This method also specifies a list of known types that may be present in the object graph, the maximum number of graph items to serialize, parameters to ignore unexpected data, whether to use non-standard XML constructs to preserve object reference data in the graph, a surrogate for custom serialization, the XML element and namespace that contains the content, and an alternative for mapping xsi:type declarations at run time.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString) DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString) DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString) 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.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type using the XML root element and namespace specified through the parameters of type XmlDictionaryString.

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

Initialisiert eine neue Instanz der DataContractSerializer-Klasse, um ein Objekt des genannten Typs zu serialisieren bzw. zu deserialisieren.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type. 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.This method also specifies the root XML element and namespace in two XmlDictionaryString parameters as well as a list of known types that may be present in the object graph.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) 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.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type. 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.This method also specifies a list of known types that may be present in the object graph, the maximum number of graph items to serialize, parameters to ignore unexpected data, whether to use non-standard XML constructs to preserve object reference data in the graph, a surrogate for custom serialization, and parameters of XmlDictionaryString that specify the XML element and namespace that contain the content.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) 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.Initializes a new instance of the DataContractSerializer class to serialize or deserialize an object of the specified type. 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.This method also specifies a list of known types that may be present in the object graph, the maximum number of graph items to serialize, parameters to ignore unexpected data, whether to use non-standard XML constructs to preserve object reference data in the graph, a surrogate for custom serialization, parameters of XmlDictionaryString that specify the XML element and namespace that contains the content, and an alternative for mapping xsi:type declarations at run time.

Eigenschaften

DataContractResolver DataContractResolver DataContractResolver DataContractResolver

Ruft die Komponente für die dynamische Zuordnung von xsi:type-Deklarationen zu bekannten Vertragstypen ab.Gets the component used to dynamically map xsi:type declarations to known contract types.

DataContractSurrogate DataContractSurrogate DataContractSurrogate DataContractSurrogate

Ruft einen Ersatzzeichentyp ab, der den Serialisierungs- oder Deserialisierungsprozess erweitern kann.Gets a surrogate type that can extend the serialization or deserialization process.

IgnoreExtensionDataObject IgnoreExtensionDataObject IgnoreExtensionDataObject 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.Gets a value that specifies whether to ignore data supplied by an extension of the class when the class is being serialized or deserialized.

KnownTypes KnownTypes KnownTypes KnownTypes

Ruft eine Auflistung der Typen in einem Objektdiagramm ab, die mithilfe einer Instanz des DataContractSerializer-Objekts serialisiert werden.Gets a collection of types that may be present in the object graph serialized using this instance of the DataContractSerializer.

MaxItemsInObjectGraph MaxItemsInObjectGraph MaxItemsInObjectGraph MaxItemsInObjectGraph

Ruft die maximale Anzahl von Elementen in einem Objektdiagramm ab, die serialisiert oder deserialisiert werden.Gets the maximum number of items in an object graph to serialize or deserialize.

PreserveObjectReferences PreserveObjectReferences PreserveObjectReferences PreserveObjectReferences

Ruft einen Wert ab, der angibt, ob zum Beibehalten von Objektverweisdaten nicht standardmäßige XML-Konstrukte verwendet werden sollen.Gets a value that specifies whether to use non-standard XML constructs to preserve object reference data.

SerializeReadOnlyTypes SerializeReadOnlyTypes SerializeReadOnlyTypes SerializeReadOnlyTypes

Ruft einen Wert ab, der angibt, ob schreibgeschützte Typen serialisiert werden.Gets a value that specifies whether read-only types are serialized.

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als die Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
IsStartObject(XmlDictionaryReader) IsStartObject(XmlDictionaryReader) IsStartObject(XmlDictionaryReader) IsStartObject(XmlDictionaryReader)

Bestimmt, ob der XmlDictionaryReader auf einem Objekt positioniert ist, das deserialisiert werden kann.Determines whether the XmlDictionaryReader is positioned on an object that can be deserialized.

IsStartObject(XmlReader) IsStartObject(XmlReader) IsStartObject(XmlReader) IsStartObject(XmlReader)

Bestimmt, ob der XmlReader auf einem Objekt positioniert ist, das deserialisiert werden kann.Determines whether the XmlReader is positioned on an object that can be deserialized.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ReadObject(Stream) ReadObject(Stream) ReadObject(Stream) ReadObject(Stream)

Liest den XML-Stream oder das XML-Dokument mit einem Stream und gibt das deserialisierte Objekt zurück.Reads the XML stream or document with a Stream and returns the deserialized object.

(Inherited from XmlObjectSerializer)
ReadObject(XmlDictionaryReader) ReadObject(XmlDictionaryReader) ReadObject(XmlDictionaryReader) ReadObject(XmlDictionaryReader)

Liest das XML-Dokument oder den XML-Stream mit einem XmlDictionaryReader und gibt das deserialisierte Objekt zurück.Reads the XML document or stream with an XmlDictionaryReader and returns the deserialized object.

(Inherited from XmlObjectSerializer)
ReadObject(XmlDictionaryReader, Boolean) ReadObject(XmlDictionaryReader, Boolean) ReadObject(XmlDictionaryReader, Boolean) 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.Reads the XML stream with an XmlDictionaryReader and returns the deserialized object, and also specifies whether a check is made to verify the object name before reading its value.

ReadObject(XmlDictionaryReader, Boolean, DataContractResolver) ReadObject(XmlDictionaryReader, Boolean, DataContractResolver) ReadObject(XmlDictionaryReader, Boolean, DataContractResolver) ReadObject(XmlDictionaryReader, Boolean, DataContractResolver)

Liest ein XML-Dokument oder einen XML-Dokumentstream und gibt das deserialisierte Objekt zurück.Reads an XML document or document stream and returns the deserialized object. 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.The method includes a parameter to specify whether the object name is verified is validated, and a resolver for mapping xsi:type declarations at runtime.

ReadObject(XmlReader) ReadObject(XmlReader) ReadObject(XmlReader) ReadObject(XmlReader)

Liest den XML-Stream mit einem XmlReader und gibt das deserialisierte Objekt zurück.Reads the XML stream with an XmlReader and returns the deserialized object.

ReadObject(XmlReader, Boolean) ReadObject(XmlReader, Boolean) ReadObject(XmlReader, Boolean) 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.Reads the XML stream with an XmlReader and returns the deserialized object, and also specifies whether a check is made to verify the object name before reading its value.

ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)
WriteEndObject(XmlDictionaryWriter) WriteEndObject(XmlDictionaryWriter) WriteEndObject(XmlDictionaryWriter) WriteEndObject(XmlDictionaryWriter)

Schreibt das abschließende XML-Element mit einem XmlDictionaryWriter.Writes the closing XML element using an XmlDictionaryWriter.

WriteEndObject(XmlWriter) WriteEndObject(XmlWriter) WriteEndObject(XmlWriter) WriteEndObject(XmlWriter)

Schreibt das abschließende XML-Element mit einem XmlWriter.Writes the closing XML element using an XmlWriter.

WriteObject(Stream, Object) WriteObject(Stream, Object) WriteObject(Stream, Object) 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.Writes the complete content (start, content, and end) of the object to the XML document or stream with the specified Stream.

(Inherited from XmlObjectSerializer)
WriteObject(XmlDictionaryWriter, Object) WriteObject(XmlDictionaryWriter, Object) WriteObject(XmlDictionaryWriter, Object) 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.Writes the complete content (start, content, and end) of the object to the XML document or stream with the specified XmlDictionaryWriter.

(Inherited from XmlObjectSerializer)
WriteObject(XmlDictionaryWriter, Object, DataContractResolver) WriteObject(XmlDictionaryWriter, Object, DataContractResolver) WriteObject(XmlDictionaryWriter, Object, DataContractResolver) WriteObject(XmlDictionaryWriter, Object, DataContractResolver)

Schreibt alle Objektdaten (XML-Startelement, Inhalt und abschließendes Element) in ein XML-Dokument oder einen XML-Stream, unter Verwendung des angegebenen "XmlDictionaryWriter".Writes all the object data (starting XML element, content, and enclosing element) to an XML document or stream using the specified XmlDictionaryWriter. Die Methode umfasst einen Resolver zum Zuordnen von xsi:type-Deklarationen zur Laufzeit.The method includes a resolver for mapping xsi:type declarations at runtime.

WriteObject(XmlWriter, Object) WriteObject(XmlWriter, Object) WriteObject(XmlWriter, Object) WriteObject(XmlWriter, Object)

Schreibt alle Objektdaten (XML-Startelement, Inhalt und abschließendes Element) mit einem XmlWriter in ein XML-Dokument oder einen XML-Stream.Writes all the object data (starting XML element, content, and closing element) to an XML document or stream with an XmlWriter.

WriteObjectContent(XmlDictionaryWriter, Object) WriteObjectContent(XmlDictionaryWriter, Object) WriteObjectContent(XmlDictionaryWriter, Object) WriteObjectContent(XmlDictionaryWriter, Object)

Schreibt den XML-Inhalt mit einem XmlDictionaryWriter.Writes the XML content using an XmlDictionaryWriter.

WriteObjectContent(XmlWriter, Object) WriteObjectContent(XmlWriter, Object) WriteObjectContent(XmlWriter, Object) WriteObjectContent(XmlWriter, Object)

Schreibt den XML-Inhalt mit einem XmlWriter.Writes the XML content using an XmlWriter.

WriteStartObject(XmlDictionaryWriter, Object) WriteStartObject(XmlDictionaryWriter, Object) WriteStartObject(XmlDictionaryWriter, Object) WriteStartObject(XmlDictionaryWriter, Object)

Schreibt das öffnende XML-Element mit einem XmlDictionaryWriter.Writes the opening XML element using an XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object) WriteStartObject(XmlWriter, Object) WriteStartObject(XmlWriter, Object) WriteStartObject(XmlWriter, Object)

Schreibt das öffnende XML-Element mit einem XmlWriter.Writes the opening XML element using an XmlWriter.

Extension Methods

GetSerializationSurrogateProvider(DataContractSerializer) GetSerializationSurrogateProvider(DataContractSerializer) GetSerializationSurrogateProvider(DataContractSerializer) GetSerializationSurrogateProvider(DataContractSerializer)

Gibt den niedrigen Serialisierungsanbieter für dieses Serialisierungsmodul zurück.Returns the surrogate serialization provider for this serializer.

SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider) SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider) SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider) SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider)

Gibt den Ersatzserialisierungsanbieter für dieses DataContractSerializer an.Specifies a surrogate serialization provider for this DataContractSerializer.

Gilt für:

Threadsicherheit

Instanzen dieser Klasse sind threadsicher, außer wenn die Instanz, mit einer Implementierung verwendet wird der IDataContractSurrogate oder DataContractResolver.Instances of this class are thread safe except when the instance is used with an implementation of the IDataContractSurrogate or DataContractResolver.

Siehe auch