DataContractSerializer Klas

Definitie

Serialiseert en ontserialiseerd een exemplaar van een type in een XML-stroom of -document met behulp van een opgegeven gegevenscontract. Deze klasse kan niet worden overgenomen.

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

Opmerkingen

Gebruik de DataContractSerializer klasse om exemplaren van een type te serialiseren en deserialiseren in een XML-stroom of -document. U kunt bijvoorbeeld een type met de naam Person maken met eigenschappen die essentiële gegevens bevatten, zoals een naam en adres. Vervolgens kunt u een exemplaar van de Person klasse maken en bewerken en alle eigenschapswaarden in een XML-document schrijven voor later ophalen of in een XML-stroom voor direct transport. Het belangrijkste is dat de DataContractSerializer wordt gebruikt om gegevens te serialiseren en deserialiseren die worden verzonden in berichten van Windows Communication Foundation (WCF). Pas het DataContractAttribute kenmerk toe op klassen en het DataMemberAttribute kenmerk op klasseleden om eigenschappen en velden op te geven die worden geserialiseerd.

Zie Typen die worden ondersteund door de Serializer van het gegevenscontract voor een lijst met typen die kunnen worden geserialiseerd.

Als u de DataContractSerializerindeling wilt gebruiken, maakt u eerst een exemplaar van een klasse en een object dat geschikt is voor het schrijven of lezen van de indeling, bijvoorbeeld een exemplaar van de XmlDictionaryWriterklasse. Roep vervolgens de WriteObject methode aan om de gegevens te behouden. Als u gegevens wilt ophalen, maakt u een object dat geschikt is voor het lezen van de gegevensindeling (zoals een XmlDictionaryReader voor een XML-document) en roept u de ReadObject methode aan.

Zie DataContractSerializer voor meer informatie over het gebruik van de

U kunt het type serializer voor een gegevenscontract instellen met behulp van het <dataContractSerializer-element> in een clienttoepassingsconfiguratiebestand.

Klassen voorbereiden voor serialisatie of deserialisatie

De DataContractSerializer wordt gebruikt in combinatie met de DataContractAttribute en DataMemberAttribute klassen. Om een klasse voor te bereiden op serialisatie, past u de DataContractAttribute toe op de klasse. Voor elk lid van de klasse die gegevens retourneert die u wilt serialiseren, past u het DataMemberAttributetoe. U kunt velden en eigenschappen serialiseren, ongeacht toegankelijkheid: privé, beveiligd, intern, beveiligd intern of openbaar.

Uw schema geeft bijvoorbeeld een Customer met een ID eigenschap op, maar u hebt al een bestaande toepassing die gebruikmaakt van een type met Person een Name eigenschap. Als u een type wilt maken dat voldoet aan het contract, past u eerst de DataContractAttribute klasse toe. Pas vervolgens het DataMemberAttribute veld of elke eigenschap toe die u wilt serialiseren.

Note

U kunt de DataMemberAttribute toepassing toepassen op zowel privé- als openbare leden.

De uiteindelijke indeling van de XML hoeft geen tekst te zijn. In plaats daarvan schrijft de DataContractSerializer gegevens als een XML-infoset, waarmee u de gegevens kunt schrijven naar elke indeling die wordt herkend door de XmlReader en XmlWriter. Het wordt aanbevolen om de XmlDictionaryReader en XmlDictionaryWriter klassen te gebruiken om te lezen en schrijven, omdat beide zijn geoptimaliseerd voor gebruik met de DataContractSerializer.

Als u een klasse maakt die velden of eigenschappen bevat die moeten worden ingevuld voordat de serialisatie of deserialisatie plaatsvindt, gebruikt u callback-kenmerken, zoals beschreven in Version-Tolerant Callbacks voor serialisatie.

Toevoegen aan de verzameling bekende typen

Bij het serialiseren of deserialiseren van een object is het vereist dat het type 'bekend' is bij de DataContractSerializer. Begin met het maken van een exemplaar van een klasse die `IEnumerable<T>` implementeert (zoals `List<T>`) en voeg de bekende typen toe aan de verzameling. Creëer vervolgens een instantie van DataContractSerializer door een van de overbelastingen te gebruiken die de IEnumerable<T> gebruiken (bijvoorbeeld DataContractSerializer(Type, IEnumerable<Type>)).

Note

In tegenstelling tot andere primitieve typen is de DateTimeOffset structuur standaard geen bekend type, dus deze moet handmatig worden toegevoegd aan de lijst met bekende typen (zie Bekende gegevenscontracttypen).

Voorwaartse compatibiliteit

De DataContractSerializer begrijpt gegevenscontracten die zijn ontworpen om compatibel te zijn met toekomstige versies van het contract. Dergelijke typen implementeren de IExtensibleDataObject interface. De interface bevat de ExtensionData eigenschap die een ExtensionDataObject object retourneert. Zie Forward-Compatible Data Contracts voor meer informatie.

Constructors

Name Description
DataContractSerializer(Type, DataContractSerializerSettings)

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type en deserialiseren te serialiseren of deserialiseren.

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

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren. Met deze methode geeft u ook een lijst met bekende typen op die aanwezig kunnen zijn in de objectgrafiek, het maximum aantal grafiekitems dat moet worden geserialiseerd, parameters om onverwachte gegevens te negeren, of u niet-standaard XML-constructies wilt gebruiken om objectverwijzingsgegevens in de grafiek te behouden, een surrogaat voor aangepaste serialisatie en een alternatief voor toewijzingsdeclaraties xsi:type tijdens runtime.

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

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren. Deze methode geeft ook een lijst met bekende typen op die aanwezig kunnen zijn in de objectgrafiek, het maximum aantal grafiekitems dat moet worden geserialiseerd, parameters om onverwachte gegevens te negeren, of niet-standaard XML-constructies moeten worden gebruikt om objectverwijzingsgegevens in de grafiek te behouden en een surrogaat voor aangepaste serialisatie.

DataContractSerializer(Type, IEnumerable<Type>)

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren en een verzameling bekende typen die mogelijk aanwezig zijn in de objectgrafiek.

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

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren. Met deze methode wordt ook een lijst opgegeven met bekende typen die aanwezig kunnen zijn in de objectgrafiek, het maximum aantal graafitems dat moet worden geserialiseerd, parameters om onverwachte gegevens te negeren, of er niet-standaard XML-constructies moeten worden gebruikt om objectverwijzingsgegevens in de grafiek te behouden, een surrogaat voor aangepaste serialisatie, het XML-element en de naamruimte die de inhoud bevat, en een alternatief voor toewijzingsdeclaraties xsi:type tijdens runtime.

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

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren. Met deze methode geeft u ook een lijst met bekende typen op die aanwezig kunnen zijn in de objectgrafiek, het maximum aantal grafiekitems dat moet worden geserialiseerd, parameters om onverwachte gegevens te negeren, of u niet-standaard XML-constructies wilt gebruiken om objectverwijzingsgegevens in de grafiek te behouden, een surrogaat voor aangepaste serialisatie en het XML-element en de naamruimte die de inhoud bevatten.

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

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren. Met deze methode worden ook het XML-hoofdelement en de naamruimte in twee tekenreeksparameters opgegeven, evenals een lijst met bekende typen die mogelijk aanwezig zijn in de objectgrafiek.

DataContractSerializer(Type, String, String)

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren met behulp van het opgegeven XML-hoofdelement en de naamruimte.

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

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren. Met deze methode wordt ook een lijst met bekende typen opgegeven die aanwezig kunnen zijn in de objectgrafiek, het maximum aantal grafiekitems dat moet worden geserialiseerd, parameters om onverwachte gegevens te negeren, ongeacht of er niet-standaard XML-constructies moeten worden gebruikt om objectverwijzingsgegevens in de grafiek te behouden, een surrogaat voor aangepaste serialisatie, parameters die XmlDictionaryString het XML-element en de naamruimte opgeven die de inhoud bevat, en een alternatief voor toewijzingsdeclaraties xsi:type tijdens runtime.

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

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren. Met deze methode geeft u ook een lijst met bekende typen op die aanwezig kunnen zijn in de objectgrafiek, het maximum aantal grafiekitems dat moet worden geserialiseerd, parameters om onverwachte gegevens te negeren, of u niet-standaard XML-constructies wilt gebruiken om objectverwijzingsgegevens in de grafiek te behouden, een surrogaat voor aangepaste serialisatie en parameters van XmlDictionaryString die het XML-element en de naamruimte opgeven die de inhoud bevatten.

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

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren. Met deze methode worden ook het XML-hoofdelement en de naamruimte in twee XmlDictionaryString parameters opgegeven, evenals een lijst met bekende typen die mogelijk aanwezig zijn in de objectgrafiek.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString)

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren met behulp van het XML-hoofdelement en de naamruimte die is opgegeven via de parameters van het type XmlDictionaryString.

DataContractSerializer(Type)

Initialiseert een nieuw exemplaar van de DataContractSerializer klasse om een object van het opgegeven type te serialiseren of deserialiseren.

Eigenschappen

Name Description
DataContractResolver

Hiermee wordt het onderdeel opgehaald dat wordt gebruikt om declaraties dynamisch toe te wijzen xsi:type aan bekende contracttypen.

DataContractSurrogate

Hiermee haalt u een surrogaattype op dat het serialisatie- of deserialisatieproces kan uitbreiden.

IgnoreExtensionDataObject

Hiermee wordt een waarde opgehaald die aangeeft of gegevens die worden geleverd door een extensie van de klasse moeten worden genegeerd wanneer de klasse wordt geserialiseerd of gedeserialiseerd.

KnownTypes

Hiermee haalt u een verzameling typen op die mogelijk aanwezig zijn in de objectgrafiek die kan worden geserialiseerd met behulp van dit exemplaar van de DataContractSerializer.

MaxItemsInObjectGraph

Hiermee haalt u het maximum aantal items in een objectgrafiek op om te serialiseren of deserialiseren.

PreserveObjectReferences

Hiermee wordt een waarde opgehaald die aangeeft of er niet-standaard XML-constructies moeten worden gebruikt om objectverwijzingsgegevens te behouden.

SerializeReadOnlyTypes

Hiermee wordt een waarde opgehaald die aangeeft of alleen-lezentypen worden geserialiseerd.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsStartObject(XmlDictionaryReader)

Bepaalt of de positie van het XmlDictionaryReader object is gebaseerd op een object dat kan worden gedeserialiseerd.

IsStartObject(XmlReader)

Bepaalt of de positie van het XmlReader object is gebaseerd op een object dat kan worden gedeserialiseerd.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ReadObject(Stream)

Leest de XML-stroom of het document met een Stream en retourneert het gedeserialiseerde object.

(Overgenomen van XmlObjectSerializer)
ReadObject(XmlDictionaryReader, Boolean, DataContractResolver)

Leest een XML-document of documentstream en retourneert het gedeserialiseerde object. De methode bevat een parameter om op te geven of de objectnaam is geverifieerd, en een resolver voor toewijzingsdeclaraties xsi:type tijdens runtime.

ReadObject(XmlDictionaryReader, Boolean)

Leest de XML-stroom met een XmlDictionaryReader en retourneert het gedeserialiseerde object en geeft ook aan of er een controle wordt uitgevoerd om de objectnaam te controleren voordat de waarde wordt gelezen.

ReadObject(XmlDictionaryReader)

Leest het XML-document of de stream met een XmlDictionaryReader en retourneert het gedeserialiseerde object.

(Overgenomen van XmlObjectSerializer)
ReadObject(XmlReader, Boolean)

Leest de XML-stroom met een XmlReader en retourneert het gedeserialiseerde object en geeft ook aan of er een controle wordt uitgevoerd om de objectnaam te controleren voordat de waarde wordt gelezen.

ReadObject(XmlReader)

Leest de XML-stroom met een XmlReader en retourneert het gedeserialiseerde object.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
WriteEndObject(XmlDictionaryWriter)

Hiermee schrijft u het afsluitende XML-element met behulp van een XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Hiermee schrijft u het afsluitende XML-element met behulp van een XmlWriter.

WriteObject(Stream, Object)

Hiermee schrijft u de volledige inhoud (begin, inhoud en einde) van het object naar het XML-document of stream met de opgegeven Stream.

(Overgenomen van XmlObjectSerializer)
WriteObject(XmlDictionaryWriter, Object, DataContractResolver)

Hiermee schrijft u alle objectgegevens (het starten van het XML-element, de inhoud en het insluiten van een element) naar een XML-document of -stream met behulp van de opgegeven XmlDictionaryWriter. De methode bevat een resolver voor toewijzingsdeclaraties xsi:type tijdens runtime.

WriteObject(XmlDictionaryWriter, Object)

Hiermee schrijft u de volledige inhoud (begin, inhoud en einde) van het object naar het XML-document of stream met de opgegeven XmlDictionaryWriter.

(Overgenomen van XmlObjectSerializer)
WriteObject(XmlWriter, Object)

Schrijft alle objectgegevens (beginnend XML-element, inhoud en slotelement) naar een XML-document of stream met een XmlWriter.

WriteObjectContent(XmlDictionaryWriter, Object)

Hiermee schrijft u de XML-inhoud met behulp van een XmlDictionaryWriter.

WriteObjectContent(XmlWriter, Object)

Hiermee schrijft u de XML-inhoud met behulp van een XmlWriter.

WriteStartObject(XmlDictionaryWriter, Object)

Hiermee schrijft u het geopende XML-element met behulp van een XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object)

Hiermee schrijft u het geopende XML-element met behulp van een XmlWriter.

Extensiemethoden

Name Description
GetSerializationSurrogateProvider(DataContractSerializer)

Hiermee wordt de surrogaatserialisatieprovider voor deze serialisatieprovider geretourneerd.

SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider)

Hiermee geeft u een surrogaatserialisatieprovider voor deze DataContractSerializer.

Van toepassing op

Veiligheid thread

Exemplaren van deze klasse zijn threadveilig, behalve wanneer het exemplaar wordt gebruikt met een implementatie van de IDataContractSurrogate of DataContractResolver.

Zie ook