DataContractSerializer Osztály

Definíció

Egy adott típusú példány szerializálása és deszerializálása XML-adatfolyamba vagy -dokumentumba egy megadott adatszerződés használatával. Ez az osztály nem örökölhető.

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
Öröklődés
DataContractSerializer

Megjegyzések

DataContractSerializer Az osztály használatával szerializálhatja és deszerializálhatja a típuspéldányokat EGY XML-adatfolyamban vagy -dokumentumban. Létrehozhat például egy olyan típust, amely alapvető adatokat, például nevet és címet tartalmazó tulajdonságokkal rendelkezik Person . Ezután létrehozhat és módosíthat egy osztálypéldányt Person , és az összes tulajdonságértékét megírhatja egy XML-dokumentumban későbbi lekérés céljából, vagy egy XML-adatfolyamban azonnali átvitel céljából. A legfontosabb az, hogy a DataContractSerializer szerializálja és deszerializálja az adatok a Windows kommunikációs alaprendszer (WCF) üzenetekben. Alkalmazza az attribútumot az DataContractAttribute osztályokra, az attribútumot pedig az DataMemberAttribute osztálytagokra a szerializált tulajdonságok és mezők megadásához.

A szerializálható típusok listáját az Adatszerződés szerializálója által támogatott típusok című témakörben találja.

A DataContractSerializerhasználatához először hozzon létre egy osztálypéldányt és egy, a formátum írásához vagy olvasásához megfelelő objektumot, például a XmlDictionaryWriter. Ezután hívja meg a metódust WriteObject az adatok megőrzéséhez. Az adatok lekéréséhez hozzon létre egy olyan objektumot, amely megfelel az adatformátum (például egy XmlDictionaryReader XML-dokumentum) olvasásának, és hívja meg a metódust ReadObject .

További információért a DataContractSerializer használatával kapcsolatban, lásd a szerializálást és deszerializálást.

Az adatszerződés szerializálójának típusát az ügyfélalkalmazás konfigurációs fájljának dataContractSerializer< elemével állíthatja be.>

Osztályok előkészítése szerializálási vagy deszerializálási célokra

A DataContractSerializer a DataContractAttribute és DataMemberAttribute osztályokkal együtt van használva. Az osztály szerializálásra való előkészítéséhez alkalmazza az DataContractAttribute az osztályra. A szerializálni kívánt adatokat visszaadó osztály minden egyes tagjára alkalmazza a DataMemberAttribute. A mezőket és tulajdonságokat hozzáférhetőségtől függetlenül szerializálhatja: privát, védett, belső, védett belső vagy nyilvános.

Mivel például a sémája egy Customer tulajdonságú ID-t határoz meg, de már rendelkezik egy meglévő alkalmazással, amely egy Person tulajdonságú Name típust használ. A szerződésnek megfelelő típus létrehozásához először alkalmazza az DataContractAttribute osztályra. Ezután alkalmazza az DataMemberAttribute összes szerializálni kívánt mezőre vagy tulajdonságra.

Note

A magán- és a nyilvános tagokra is alkalmazhatja a DataMemberAttribute elemet.

Az XML végső formátumának nem kell szövegnek lennie. Ehelyett az DataContractSerializer adatok XML-adatkészletként vannak megírva, amely lehetővé teszi, hogy az adatokat bármilyen, az XmlReader és XmlWriteráltal felismert formátumba írja. Javasolt az XmlDictionaryReader és XmlDictionaryWriter osztályokat használni olvasásra és írásra, mert mindkettő optimalizálva van a DataContractSerializer-vel való együttműködésre.

Ha olyan osztályt hoz létre, amely olyan mezőkkel vagy tulajdonságokkal rendelkezik, amelyeket a szerializálás vagy deszerializálás előtt fel kell tölteni, használjon visszahívási attribútumokatVersion-Tolerant Szerializálási visszahívások című cikkben leírtak szerint.

Hozzáadás az ismert típusok gyűjteményéhez

Amikor egy objektum szerializálását vagy deszerializálását végezzük, a típusnak "ismertnek" kell lennie a DataContractSerializer számára. Először hozzon létre egy olyan osztálypéldányt, amely implementálja IEnumerable<T> (például List<T>) és hozzáadja az ismert típusokat a gyűjteményhez. Ezután hozzon létre egy példányt a DataContractSerializer egyik túlterhelési módjának használatával, amely tartalmazza a IEnumerable<T>-t (például DataContractSerializer(Type, IEnumerable<Type>)).

Note

A többi primitív típustól eltérően a DateTimeOffset struktúra alapértelmezés szerint nem ismert típus, ezért manuálisan kell hozzáadni az ismert típusok listájához (lásd : Adatszerződés ismert típusai).

Előremenő kompatibilitás

A DataContractSerializer érti az adatszerződéseket, amelyeket úgy terveztek, hogy kompatibilisek legyenek a szerződés jövőbeli verzióival. Az ilyen típusok implementálják az interfészt IExtensibleDataObject . Az interfész az ExtensionData objektumot visszaadó tulajdonságot ExtensionDataObject tartalmazza. További információ: Forward-Compatible Adatszerződések.

Konstruktorok

Name Description
DataContractSerializer(Type, DataContractSerializerSettings)

Inicializálja az osztály új példányát, DataContractSerializer hogy szerializáljon vagy deszerializáljon egy adott típusú és beállítású objektumot.

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

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához. Ez a módszer az objektumgráfban esetleg jelen lévő ismert típusok listáját, a szerializálandó gráfelemek maximális számát, a váratlan adatok figyelmen kívül hagyására szolgáló paramétereket, a nem szabványos XML-szerkezeteket a gráf objektumhivatkozási adatainak megőrzésére, az egyéni szerializálás helyettesét és a futtatáskor történő leképezés xsi:type alternatíváját határozza meg.

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

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához. Ez a módszer az objektumgráfban esetleg jelen lévő ismert típusok listáját, a szerializálandó gráfelemek maximális számát, a váratlan adatok figyelmen kívül hagyására szolgáló paramétereket, a nem szabványos XML-szerkezetek használatát a gráf objektumhivatkozási adatainak megőrzésére, valamint az egyéni szerializálás helyettesét határozza meg.

DataContractSerializer(Type, IEnumerable<Type>)

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához, valamint az objektumgráfban esetleg megtalálható ismert típusok gyűjteményét.

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

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához. Ez a módszer az objektumgráfban esetleg jelen lévő ismert típusok listáját, a szerializálandó gráfelemek maximális számát, a váratlan adatok figyelmen kívül hagyására szolgáló paramétereket, a nem szabványos XML-szerkezeteket a gráf objektumhivatkozási adatainak megőrzésére, az egyéni szerializálás helyettesét, a tartalmat tartalmazó XML-elemet és névteret határozza meg, és alternatívát a deklarációk futásidőben történő leképezéséhez xsi:type .

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

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához. Ez a módszer az objektumgráfban esetlegesen előforduló ismert típusok listáját, a szerializálandó gráfelemek maximális számát, a váratlan adatok figyelmen kívül hagyására szolgáló paramétereket, a nem szabványos XML-szerkezeteket a gráf objektumhivatkozási adatainak megőrzésére, az egyéni szerializálás helyettesét, valamint a tartalmat tartalmazó XML-elemet és névteret határozza meg.

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

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához. Ez a metódus két sztringparaméter gyökér XML-elemét és névterét, valamint az objektumgráfban esetleg megtalálható ismert típusok listáját is megadja.

DataContractSerializer(Type, String, String)

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához a megadott XML-gyökérelem és névtér használatával.

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

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához. Ez a módszer az objektumgráfban esetleg jelen lévő ismert típusok listáját, a szerializálandó gráfelemek maximális számát, a váratlan adatok figyelmen kívül hagyására szolgáló paramétereket, a nem szabványos XML-szerkezetek használatát a gráf objektumhivatkozási adatainak megőrzésére, az egyéni szerializálás helyettesét XmlDictionaryString , a tartalmat tartalmazó XML-elemet és névteret meghatározó paramétereket határozza meg, és alternatívát a deklarációk futásidőben történő leképezéséhez xsi:type .

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

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához. Ez a módszer az objektumgráfban esetleg megtalálható ismert típusok listáját, a szerializálandó gráfelemek maximális számát, a váratlan adatok figyelmen kívül hagyására szolgáló paramétereket, a nem szabványos XML-szerkezetek használatát a gráf objektumhivatkozási adatainak megőrzésére, az egyéni szerializálás helyettesét, valamint a tartalmat tartalmazó XML-elemet és névteret meghatározó paramétereket XmlDictionaryString határozza meg.

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

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához. Ez a metódus két XmlDictionaryString paraméter gyökér XML-elemét és névterét, valamint az objektumgráfban esetleg megtalálható ismert típusok listáját is megadja.

DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString)

Inicializálja az osztály új példányát, DataContractSerializer hogy szerializálja vagy deszerializálja a megadott típusú objektumot a típusparamétereken XmlDictionaryStringmegadott XML-gyökérelem és névtér használatával.

DataContractSerializer(Type)

Inicializálja az osztály új példányát a DataContractSerializer megadott típusú objektumok szerializálásához vagy deszerializálásához.

Tulajdonságok

Name Description
DataContractResolver

Lekéri a deklarációk ismert szerződéstípusokhoz való dinamikus leképezéséhez xsi:type használt összetevőt.

DataContractSurrogate

Lekéri a helyettesítő típust, amely kibővítheti a szerializálási vagy deszerializálási folyamatot.

IgnoreExtensionDataObject

Olyan értéket kap, amely meghatározza, hogy figyelmen kívül hagyja-e az osztály kiterjesztése által szolgáltatott adatokat az osztály szerializálása vagy deszerializálása során.

KnownTypes

Lekéri a típusok gyűjteményét, amelyek jelen lehetnek az objektumgráfban szerializálva az DataContractSerializeradott példány használatával.

MaxItemsInObjectGraph

Lekéri az objektumgráfban lévő elemek maximális számát szerializálni vagy deszerializálni.

PreserveObjectReferences

Olyan értéket kap, amely meghatározza, hogy nem szabványos XML-szerkezeteket használjon-e az objektumhivatkozási adatok megőrzéséhez.

SerializeReadOnlyTypes

Olyan értéket kap, amely meghatározza, hogy az írásvédett típusok szerializálva vannak-e.

Metódusok

Name Description
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsStartObject(XmlDictionaryReader)

Meghatározza, hogy az XmlDictionaryReader objektum egy deszerializálható objektumon van-e elhelyezve.

IsStartObject(XmlReader)

Meghatározza, hogy az XmlReader objektum egy deszerializálható objektumon van-e elhelyezve.

MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ReadObject(Stream)

Beolvassa az XML-adatfolyamot vagy -dokumentumot a Stream deszerializált objektummal, és visszaadja.

(Öröklődés forrása XmlObjectSerializer)
ReadObject(XmlDictionaryReader, Boolean, DataContractResolver)

Beolvas egy XML-dokumentumot vagy dokumentumstreamet, és visszaadja a deszerializált objektumot. A metódus tartalmaz egy paramétert, amely meghatározza, hogy az objektumnév ellenőrzése megtörtént-e, és egy feloldó a futtatókörnyezetben lévő leképezési deklarációkhoz xsi:type .

ReadObject(XmlDictionaryReader, Boolean)

Beolvassa az XML-adatfolyamot egy XmlDictionaryReader és visszaadja a deszerializált objektumot, és azt is megadja, hogy a rendszer ellenőrzi-e az objektum nevét az érték elolvasása előtt.

ReadObject(XmlDictionaryReader)

Beolvassa az XML-dokumentumot vagy streamet egy XmlDictionaryReader deszerializált objektummal, és visszaadja azt.

(Öröklődés forrása XmlObjectSerializer)
ReadObject(XmlReader, Boolean)

Beolvassa az XML-adatfolyamot egy XmlReader és visszaadja a deszerializált objektumot, és azt is megadja, hogy a rendszer ellenőrzi-e az objektum nevét az érték elolvasása előtt.

ReadObject(XmlReader)

Beolvassa az XML-adatfolyamot egy XmlReader és visszaadja a deszerializált objektumot.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
WriteEndObject(XmlDictionaryWriter)

A záró XML-elemet egy XmlDictionaryWriter.

WriteEndObject(XmlWriter)

A záró XML-elemet egy XmlWriter.

WriteObject(Stream, Object)

Az objektum teljes tartalmát (kezdését, tartalmát és végét) a megadott StreamXML-dokumentumba vagy streambe írja.

(Öröklődés forrása XmlObjectSerializer)
WriteObject(XmlDictionaryWriter, Object, DataContractResolver)

Az összes objektumadatot (kezdő XML-elemet, tartalmat és belefoglaló elemet) egy XML-dokumentumba vagy streambe írja a megadott XmlDictionaryWriter használatával. A metódus tartalmaz egy feloldót a futtatókörnyezetben lévő deklarációk leképezéséhez xsi:type .

WriteObject(XmlDictionaryWriter, Object)

Az objektum teljes tartalmát (kezdését, tartalmát és végét) a megadott XmlDictionaryWriterXML-dokumentumba vagy streambe írja.

(Öröklődés forrása XmlObjectSerializer)
WriteObject(XmlWriter, Object)

Az összes objektumadatot (kezdő XML-elemet, tartalmat és záró elemet) egy XML-dokumentumba vagy streambe írja egy XmlWriter.

WriteObjectContent(XmlDictionaryWriter, Object)

Az XML-tartalmat egy XmlDictionaryWriter.

WriteObjectContent(XmlWriter, Object)

Az XML-tartalmat egy XmlWriter.

WriteStartObject(XmlDictionaryWriter, Object)

A nyitó XML-elemet egy XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object)

A nyitó XML-elemet egy XmlWriter.

Bővítő metódusok

Name Description
GetSerializationSurrogateProvider(DataContractSerializer)

A szerializáló helyettesítő szerializálási szolgáltatójának értékét adja vissza.

SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider)

Egy helyettesítő szerializálási szolgáltatót ad meg ehhez DataContractSerializera .

A következőre érvényes:

Szálbiztonság

Az osztály példányai szálbiztosak, kivéve, ha a példányt az vagy IDataContractSurrogatea DataContractResolver .

Lásd még