DataContractSerializer Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Serializuje a deserializuje instanci typu do datového proudu XML nebo dokumentu pomocí zadaného datového kontraktu. Tato třída se nemůže dědit.
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
- Dědičnost
Poznámky
Použijte třídu DataContractSerializer, abyste serializovali a deserializovali instance typu do datového proudu XML nebo dokumentu. Můžete například vytvořit typ s názvem Person s vlastnostmi, které obsahují základní data, jako je název a adresa. Pak můžete vytvořit instanci Person třídy a zapsat všechny její hodnoty vlastností do dokumentu XML pro pozdější načtení nebo v datovém proudu XML pro okamžitý přenos. Nejdůležitější je, že DataContractSerializer se používá k serializaci a deserializaci dat odesílaných ve zprávách WCF (Windows Communication Foundation). Použijte atribut DataContractAttribute na třídy a atribut DataMemberAttribute na členy tříd k určení vlastností a polí, které jsou serializovány.
Seznam typů, které lze serializovat, naleznete v části Typy podporované serializátorem kontraktu dat.
Chcete-li použít DataContractSerializer, nejprve vytvořte instanci třídy a objekt odpovídající zápisu nebo čtení formátu, například instance XmlDictionaryWriter. Potom zavolejte metodu WriteObject pro zachování dat. Pokud chcete načíst data, vytvořte objekt odpovídající pro čtení datového formátu (například XmlDictionaryReader pro dokument XML) a volejte metodu ReadObject .
Další informace o použití DataContractSerializernaleznete v tématu Serializace a deserializace.
Typ serializátoru kontraktu dat můžete nastavit pomocí <prvku dataContractSerializer> v konfiguračním souboru klientské aplikace.
Příprava tříd pro serializaci nebo deserializaci
Používá se DataContractSerializer v kombinaci s třídami DataContractAttribute a DataMemberAttribute. Chcete-li připravit třídu pro serializaci, aplikujte DataContractAttribute na třídu. Pro každého člena třídy, který vrací data, která chcete serializovat, použijte DataMemberAttribute. Můžete serializovat pole a vlastnosti bez ohledu na jejich úroveň přístupnosti: soukromé, chráněné, interní, chráněné interní nebo veřejné.
Například schéma specifikuje Customer s vlastností ID, ale již máte existující aplikaci, která používá typ pojmenovaný Person s vlastností Name. Chcete-li vytvořit typ, který odpovídá smlouvě, nejprve použijte třídu DataContractAttribute . Potom použijte DataMemberAttribute u každého pole nebo vlastnosti, které chcete serializovat.
Note
Tuto možnost DataMemberAttribute můžete použít pro soukromé i veřejné členy.
Konečný formát XML nemusí být text. DataContractSerializer Místo toho zapisuje data jako informační sadu XML, která umožňuje zapisovat data do libovolného formátu rozpoznaného operátorem XmlReader a XmlWriter. Doporučujeme, abyste ke čtení a zápisu používali třídy XmlDictionaryReader , XmlDictionaryWriter protože oba jsou optimalizované pro práci s rozhraním DataContractSerializer.
Pokud vytváříte třídu s poli nebo vlastnostmi, které musí být vyplněny před provedením serializace nebo deserializace, použijte atributy zpětného volání, jak je popsáno v Version-Tolerant Serialization Callbacks.
Přidejte do kolekce známé typy
Při serializaci nebo deserializaci objektu je nutné, aby byl typ "známý" pro DataContractSerializer. Začněte vytvořením instance třídy, která implementuje IEnumerable<T> (například List<T>) a přidá známé typy do kolekce. Pak vytvořte instanci DataContractSerializer využitím jedné z přetížených verzí, které přijímají IEnumerable<T> (například DataContractSerializer(Type, IEnumerable<Type>)).
Note
Na rozdíl od jiných primitivních typů DateTimeOffset není struktura ve výchozím nastavení známým typem, takže je nutné ji ručně přidat do seznamu známých typů (viz Známé typy kontraktu dat).
Přesměrová kompatibilita
DataContractSerializer rozumí datovým smlouvám, které byly navrženy tak, aby byly kompatibilní s budoucími verzemi smlouvy. Takové typy implementují IExtensibleDataObject rozhraní. Rozhraní obsahuje ExtensionData vlastnost, která vrací ExtensionDataObject objekt. Další informace najdete v tématu Forward-Compatible datové smlouvy.
Konstruktory
| Name | Description |
|---|---|
| DataContractSerializer(Type, DataContractSerializerSettings) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu a nastavení. |
| DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu. Tato metoda také určuje seznam známých typů, které mohou být přítomny v objektovém grafu, maximální počet položek grafu k serializaci, parametry pro ignorování neočekávaných dat, zda použít nestandardní konstrukty XML k zachování dat odkazu na objekt v grafu, náhradní pro vlastní serializaci a alternativu pro mapování |
| DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu. Tato metoda také určuje seznam známých typů, které mohou být přítomny v objektovém grafu, maximální počet položek grafu k serializaci, parametry pro ignorování neočekávaných dat, zda použít nestandardní xml konstrukty k zachování objektových referenčních dat v grafu a náhradní pro vlastní serializace. |
| DataContractSerializer(Type, IEnumerable<Type>) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu a kolekce známých typů, které mohou být přítomné v objektovém grafu. |
| DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu. Tato metoda také určuje seznam známých typů, které mohou být přítomny v objektovém grafu, maximální počet položek grafu k serializaci, parametry pro ignorování neočekávaných dat, zda použít nestandardní konstrukty XML k zachování dat odkazu na objekt v grafu, náhradní pro vlastní serializaci, element XML a obor názvů obsahující obsah, a alternativu pro mapování |
| DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu. Tato metoda také určuje seznam známých typů, které mohou být přítomny v objektovém grafu, maximální počet položek grafu k serializaci, parametry pro ignorování neočekávaných dat, zda použít nestandardní xml konstrukty k zachování objektových referenčních dat v grafu, náhradní pro vlastní serializace a element XML a obor názvů, které obsahují obsah. |
| DataContractSerializer(Type, String, String, IEnumerable<Type>) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu. Tato metoda také určuje kořenový element XML a obor názvů ve dvou řetězcových parametrech a také seznam známých typů, které mohou být přítomné v objektovém grafu. |
| DataContractSerializer(Type, String, String) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu pomocí zadaného elementu XML kořenového elementu a oboru názvů. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu. Tato metoda také určuje seznam známých typů, které mohou být přítomny v objektovém grafu, maximální počet položek grafu k serializaci, parametry pro ignorování neočekávaných dat, zda použít nestandardní xml konstrukty k zachování objektových referenčních dat v grafu, náhradní pro vlastní serializaci, parametry XmlDictionaryString , které určují element XML a obor názvů obsahující obsah, a alternativu pro mapování |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu. Tato metoda také určuje seznam známých typů, které mohou být přítomny v objektovém grafu, maximální počet položek grafu k serializaci, parametry pro ignorování neočekávaných dat, zda použít nestandardní xml konstrukty k zachování objektových referenčních dat v grafu, náhradní pro vlastní serializace a parametry XmlDictionaryString , které určují xml element a obor názvů, které obsahují obsah. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu. Tato metoda také určuje kořenový element XML a obor názvů ve dvou XmlDictionaryString parametrech a také seznam známých typů, které mohou být přítomny v objektovém grafu. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu pomocí kořenového elementu XML a oboru názvů určeného prostřednictvím parametrů typu XmlDictionaryString. |
| DataContractSerializer(Type) |
Inicializuje novou instanci DataContractSerializer třídy serializovat nebo deserializovat objekt zadaného typu. |
Vlastnosti
| Name | Description |
|---|---|
| DataContractResolver |
Získá komponentu použitou k dynamické mapování |
| DataContractSurrogate |
Získá náhradní typ, který může rozšířit serializace nebo deserializace procesu. |
| IgnoreExtensionDataObject |
Získá hodnotu, která určuje, zda má ignorovat data poskytnutá rozšířením třídy, když třída je serializována nebo deserializována. |
| KnownTypes |
Získá kolekci typů, které mohou být přítomny v objekt grafu serializované pomocí této instance DataContractSerializer. |
| MaxItemsInObjectGraph |
Získá maximální počet položek v grafu objektu serializovat nebo deserializovat. |
| PreserveObjectReferences |
Získá hodnotu, která určuje, zda použít nestandardní xml konstrukty pro zachování objektu odkaz data. |
| SerializeReadOnlyTypes |
Získá hodnotu, která určuje, zda jsou typy jen pro čtení serializovány. |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| IsStartObject(XmlDictionaryReader) |
Určuje, zda je umístěn XmlDictionaryReader na objektu, který lze deserializovat. |
| IsStartObject(XmlReader) |
Určuje, zda je umístěn XmlReader na objektu, který lze deserializovat. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ReadObject(Stream) |
Načte datový proud XML nebo dokument s deserializovaným objektem Stream a vrátí. (Zděděno od XmlObjectSerializer) |
| ReadObject(XmlDictionaryReader, Boolean, DataContractResolver) |
Přečte dokument XML nebo datový proud dokumentu a vrátí deserializovaný objekt. Metoda obsahuje parametr, který určuje, jestli je ověřený název objektu, a překladač pro mapování |
| ReadObject(XmlDictionaryReader, Boolean) |
Načte datový proud XML s deserializovaným objektem XmlDictionaryReader a také určuje, zda je provedena kontrola ověření názvu objektu před přečtením jeho hodnoty. |
| ReadObject(XmlDictionaryReader) |
Přečte dokument XML nebo datový proud s deserializovaným objektem XmlDictionaryReader a vrátí deserializovaný objekt. (Zděděno od XmlObjectSerializer) |
| ReadObject(XmlReader, Boolean) |
Načte datový proud XML s deserializovaným objektem XmlReader a také určuje, zda je provedena kontrola ověření názvu objektu před přečtením jeho hodnoty. |
| ReadObject(XmlReader) |
Načte datový proud XML s deserializovaným objektem XmlReader a vrátí ho. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
| WriteEndObject(XmlDictionaryWriter) |
Zapíše zavírací element XML pomocí znaku XmlDictionaryWriter. |
| WriteEndObject(XmlWriter) |
Zapíše zavírací element XML pomocí znaku XmlWriter. |
| WriteObject(Stream, Object) |
Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným Stream. (Zděděno od XmlObjectSerializer) |
| WriteObject(XmlDictionaryWriter, Object, DataContractResolver) |
Zapíše všechna data objektu (spuštění elementu XML, obsahu a ohraničující element) do dokumentu XML nebo datového proudu pomocí zadaného XmlDictionaryWriter. Tato metoda obsahuje překladač pro mapování |
| WriteObject(XmlDictionaryWriter, Object) |
Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným XmlDictionaryWriter. (Zděděno od XmlObjectSerializer) |
| WriteObject(XmlWriter, Object) |
Zapíše všechna data objektu (spuštění elementu XML, obsahu a uzavření elementu) do dokumentu XML nebo datového proudu pomocí XmlWriter. |
| WriteObjectContent(XmlDictionaryWriter, Object) |
Zapíše obsah XML pomocí .XmlDictionaryWriter |
| WriteObjectContent(XmlWriter, Object) |
Zapíše obsah XML pomocí .XmlWriter |
| WriteStartObject(XmlDictionaryWriter, Object) |
Zapíše levý element XML pomocí znaku XmlDictionaryWriter. |
| WriteStartObject(XmlWriter, Object) |
Zapíše levý element XML pomocí znaku XmlWriter. |
Metody rozšíření
| Name | Description |
|---|---|
| GetSerializationSurrogateProvider(DataContractSerializer) |
Vrátí náhradního zprostředkovatele serializace pro tento serializátor. |
| SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider) |
Určuje náhradního zprostředkovatele serializace pro toto DataContractSerializer. |
Platí pro
Bezpečný přístup z více vláken
Instance této třídy jsou bezpečné pro vlákna s výjimkou případů, kdy je instance použita s implementací IDataContractSurrogate nebo DataContractResolver.