DataContractSerializer Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Serialiserar och deserialiserar en instans av en typ till en XML-dataström eller ett dokument med hjälp av ett angivet datakontrakt. Det går inte att ärva den här klassen.
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
- Arv
Kommentarer
DataContractSerializer Använd klassen för att serialisera och deserialisera instanser av en typ till en XML-dataström eller ett dokument. Du kan till exempel skapa en typ med namnet Person med egenskaper som innehåller viktiga data, till exempel ett namn och en adress. Du kan sedan skapa och ändra en instans av Person klassen och skriva alla dess egenskapsvärden i ett XML-dokument för senare hämtning eller i en XML-dataström för omedelbar transport. Viktigast av allt är att DataContractSerializer används för att serialisera och deserialisera data som skickas i WCF-meddelanden (Windows Communication Foundation).
DataContractAttribute Använd attributet för klasser och DataMemberAttribute attributet för klassmedlemmar för att ange egenskaper och fält som serialiseras.
En lista över typer som kan serialiseras finns i Typer som stöds av Data Contract Serializer.
Om du vill använda DataContractSerializerskapar du först en instans av en klass och ett objekt som är lämpligt för att skriva eller läsa formatet, till exempel en instans av XmlDictionaryWriter. Anropa WriteObject sedan metoden för att spara data. Om du vill hämta data skapar du ett objekt som är lämpligt för att läsa dataformatet (till exempel ett XmlDictionaryReader för ett XML-dokument) och anropa ReadObject metoden.
Mer information om hur du använder finns i DataContractSerializerSerialisering och deserialisering.
Du kan ange typen av en datakontrakts serialiserare med hjälp av elementet< dataContractSerializer> i en konfigurationsfil för klientprogram.
Förbereda klasser för serialisering eller deserialisering
DataContractSerializer Används i kombination med klasserna DataContractAttribute och DataMemberAttribute . För att förbereda en klass för serialisering, tillämpa DataContractAttribute på klassen. För varje medlem i klassen som returnerar data som du vill serialisera, använd DataMemberAttribute. Du kan serialisera fält och egenskaper, oavsett tillgänglighet: privat, skyddad, intern, skyddad intern eller offentlig.
Ditt schema anger till exempel en Customer med en ID egenskap, men du har redan ett befintligt program som använder en typ med namnet Person med en Name egenskap. För att skapa en typ som överensstämmer med kontraktet tillämpar du först DataContractAttribute på klassen. Använd sedan DataMemberAttribute på varje fält eller egenskap som du vill serialisera.
Note
Du kan använda DataMemberAttribute på både privata och offentliga medlemmar.
Det slutliga formatet för XML-koden behöver inte vara text. I stället skriver DataContractSerializer data som en XML-informationsuppsättning, vilket gör att du kan skriva data till alla format som igenkänns av XmlReader och XmlWriter. Vi rekommenderar att du använder klasserna XmlDictionaryReader och XmlDictionaryWriter för att läsa och skriva, eftersom båda är optimerade för att fungera med DataContractSerializer.
Om du skapar en klass som har fält eller egenskaper som måste anges innan serialiseringen eller deserialiseringen sker, ska du använda återanropsattribut som beskrivs i Version-Tolerant Serialiseringsåteranrop.
Lägg till i samlingen med kända typer
När du serialiserar eller deserialiserar ett objekt krävs det att typen är "känd" för DataContractSerializer. Börja med att skapa en instans av en klass som implementerar IEnumerable<T> (till exempel List<T>) och lägga till kända typer i samlingen. Skapa sedan en instans av DataContractSerializer med hjälp av en av de överlagringar som tar IEnumerable<T> (till exempel DataContractSerializer(Type, IEnumerable<Type>)).
Note
Till skillnad från andra primitiva typer DateTimeOffset är strukturen inte en känd typ som standard, så den måste läggas till manuellt i listan över kända typer (se Kända typer av datakontrakt).
Framåtkompatibilitet
DataContractSerializer förstår datakontrakt som har utformats för att vara kompatibla med framtida versioner av kontraktet. Sådana typer implementerar IExtensibleDataObject gränssnittet. Gränssnittet har egenskapen ExtensionData som returnerar ett ExtensionDataObject objekt. Mer information finns iForward-Compatible datakontrakt.
Konstruktorer
| Name | Description |
|---|---|
| DataContractSerializer(Type, DataContractSerializerSettings) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen och inställningarna. |
| DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen. Den här metoden anger också en lista över kända typer som kan finnas i objektdiagrammet, det maximala antalet grafobjekt som ska serialiseras, parametrar för att ignorera oväntade data, om xml-konstruktioner som inte är standard ska användas för att bevara objektreferensdata i grafen, surrogat för anpassad serialisering och ett alternativ för mappningsdeklarationer |
| DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen. Den här metoden anger också en lista över kända typer som kan finnas i objektdiagrammet, det maximala antalet grafobjekt som ska serialiseras, parametrar för att ignorera oväntade data, om xml-konstruktioner som inte är standard ska användas för att bevara objektreferensdata i grafen och en surrogat för anpassad serialisering. |
| DataContractSerializer(Type, IEnumerable<Type>) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen och en samling kända typer som kan finnas i objektdiagrammet. |
| DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen. Den här metoden anger också en lista över kända typer som kan finnas i objektdiagrammet, det maximala antalet grafobjekt som ska serialiseras, parametrar för att ignorera oväntade data, om xml-konstruktioner som inte är standard ska användas för att bevara objektreferensdata i grafen, surrogat för anpassad serialisering, XML-elementet och namnområdet som innehåller innehållet. och ett alternativ för att mappa |
| DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen. Den här metoden anger också en lista över kända typer som kan finnas i objektdiagrammet, det maximala antalet grafobjekt som ska serialiseras, parametrar för att ignorera oväntade data, om xml-konstruktioner som inte är standard ska användas för att bevara objektreferensdata i grafen, surrogat för anpassad serialisering samt XML-elementet och namnområdet som innehåller innehållet. |
| DataContractSerializer(Type, String, String, IEnumerable<Type>) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen. Den här metoden anger även rot-XML-elementet och namnområdet i två strängparametrar samt en lista över kända typer som kan finnas i objektdiagrammet. |
| DataContractSerializer(Type, String, String) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen med hjälp av det angivna XML-rotelementet och namnområdet. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen. Den här metoden anger också en lista över kända typer som kan finnas i objektdiagrammet, det maximala antalet grafobjekt som ska serialiseras, parametrar för att ignorera oväntade data, om xml-konstruktioner som inte är standard ska användas för att bevara objektreferensdata i grafen, surrogat för anpassad serialisering, parametrar XmlDictionaryString för som anger XML-elementet och namnområdet som innehåller innehållet. och ett alternativ för att mappa |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen. Den här metoden anger också en lista över kända typer som kan finnas i objektdiagrammet, det maximala antalet grafobjekt som ska serialiseras, parametrar för att ignorera oväntade data, om du vill använda xml-konstruktioner som inte är standard för att bevara objektreferensdata i grafen, surrogat för anpassad serialisering och parametrar XmlDictionaryString för som anger XML-elementet och namnområdet som innehåller innehållet. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen. Den här metoden anger även xml-rotelementet och namnområdet i två XmlDictionaryString parametrar samt en lista över kända typer som kan finnas i objektdiagrammet. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen med hjälp av XML-rotelementet och namnområdet som anges via parametrarna av typen XmlDictionaryString. |
| DataContractSerializer(Type) |
Initierar en ny instans av DataContractSerializer klassen för att serialisera eller deserialisera ett objekt av den angivna typen. |
Egenskaper
| Name | Description |
|---|---|
| DataContractResolver |
Hämtar komponenten som används för att dynamiskt mappa |
| DataContractSurrogate |
Hämtar en surrogattyp som kan utöka serialiserings- eller deserialiseringsprocessen. |
| IgnoreExtensionDataObject |
Hämtar ett värde som anger om du vill ignorera data som tillhandahålls av ett tillägg för klassen när klassen serialiseras eller deserialiseras. |
| KnownTypes |
Hämtar en samling typer som kan finnas i objektdiagrammet som serialiseras med hjälp av den här instansen DataContractSerializerav . |
| MaxItemsInObjectGraph |
Hämtar det maximala antalet objekt i ett objektdiagram som ska serialiseras eller deserialiseras. |
| PreserveObjectReferences |
Hämtar ett värde som anger om xml-konstruktioner som inte är standard ska användas för att bevara objektreferensdata. |
| SerializeReadOnlyTypes |
Hämtar ett värde som anger om skrivskyddade typer serialiseras. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| IsStartObject(XmlDictionaryReader) |
Avgör om XmlDictionaryReader är placerat på ett objekt som kan deserialiseras. |
| IsStartObject(XmlReader) |
Avgör om XmlReader är placerat på ett objekt som kan deserialiseras. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ReadObject(Stream) |
Läser XML-dataströmmen eller dokumentet med ett Stream och returnerar det deserialiserade objektet. (Ärvd från XmlObjectSerializer) |
| ReadObject(XmlDictionaryReader, Boolean, DataContractResolver) |
Läser ett XML-dokument eller dokumentström och returnerar det deserialiserade objektet. Metoden innehåller en parameter för att ange om objektnamnet har verifierats och en matchare för mappningsdeklarationer |
| ReadObject(XmlDictionaryReader, Boolean) |
Läser XML-dataströmmen med ett XmlDictionaryReader och returnerar det deserialiserade objektet och anger även om en kontroll görs för att verifiera objektnamnet innan dess värde läss. |
| ReadObject(XmlDictionaryReader) |
Läser XML-dokumentet eller dataströmmen med ett XmlDictionaryReader och returnerar det deserialiserade objektet. (Ärvd från XmlObjectSerializer) |
| ReadObject(XmlReader, Boolean) |
Läser XML-dataströmmen med ett XmlReader och returnerar det deserialiserade objektet och anger även om en kontroll görs för att verifiera objektnamnet innan dess värde läss. |
| ReadObject(XmlReader) |
Läser XML-dataströmmen med ett XmlReader och returnerar det deserialiserade objektet. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| WriteEndObject(XmlDictionaryWriter) |
Skriver det avslutande XML-elementet med hjälp av en XmlDictionaryWriter. |
| WriteEndObject(XmlWriter) |
Skriver det avslutande XML-elementet med hjälp av en XmlWriter. |
| WriteObject(Stream, Object) |
Skriver det fullständiga innehållet (start, innehåll och slut) för objektet till XML-dokumentet eller dataströmmen med angivet Stream. (Ärvd från XmlObjectSerializer) |
| WriteObject(XmlDictionaryWriter, Object, DataContractResolver) |
Skriver alla objektdata (startar XML-element, innehåll och omsluter element) till ett XML-dokument eller dataström med den angivna XmlDictionaryWriter. Metoden innehåller en lösning för mappning |
| WriteObject(XmlDictionaryWriter, Object) |
Skriver det fullständiga innehållet (start, innehåll och slut) för objektet till XML-dokumentet eller dataströmmen med angivet XmlDictionaryWriter. (Ärvd från XmlObjectSerializer) |
| WriteObject(XmlWriter, Object) |
Skriver alla objektdata (startar XML-element, innehåll och avslutande element) till ett XML-dokument eller dataström med en XmlWriter. |
| WriteObjectContent(XmlDictionaryWriter, Object) |
Skriver XML-innehållet med hjälp av en XmlDictionaryWriter. |
| WriteObjectContent(XmlWriter, Object) |
Skriver XML-innehållet med hjälp av en XmlWriter. |
| WriteStartObject(XmlDictionaryWriter, Object) |
Skriver det inledande XML-elementet med hjälp av en XmlDictionaryWriter. |
| WriteStartObject(XmlWriter, Object) |
Skriver det inledande XML-elementet med hjälp av en XmlWriter. |
Tilläggsmetoder
| Name | Description |
|---|---|
| GetSerializationSurrogateProvider(DataContractSerializer) |
Returnerar surrogat-serialiseringsprovidern för den här serialiseraren. |
| SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider) |
Anger en surrogat-serialiseringsprovider för den här DataContractSerializer. |
Gäller för
Trådsäkerhet
Instanser av den här klassen är trådsäkra förutom när instansen används med en implementering av IDataContractSurrogate eller DataContractResolver.