DataContractSerializer Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Sérialise et désérialise une instance d’un type dans un flux ou un document XML à l’aide d’un contrat de données fourni. Cette classe ne peut pas être héritée.
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
- Héritage
Remarques
Utilisez la DataContractSerializer classe pour sérialiser et désérialiser des instances d’un type dans un flux ou un document XML. Par exemple, vous pouvez créer un type nommé Person avec des propriétés qui contiennent des données essentielles, telles qu’un nom et une adresse. Vous pouvez ensuite créer et manipuler une instance de la Person classe et écrire toutes ses valeurs de propriété dans un document XML pour une récupération ultérieure, ou dans un flux XML pour le transport immédiat. Plus important, il DataContractSerializer est utilisé pour sérialiser et désérialiser les données envoyées dans les messages Windows Communication Foundation (WCF). Appliquez l’attribut DataContractAttribute aux classes et l’attribut DataMemberAttribute aux membres de classe pour spécifier les propriétés et les champs sérialisés.
Pour obtenir la liste des types qui peuvent être sérialisés, consultez Types pris en charge par le sérialiseur de contrat de données.
Pour utiliser le DataContractSerializer, commencez par créer une instance de classe et un objet approprié pour écrire ou lire le format ; par exemple, une instance du XmlDictionaryWriter. Appelez ensuite la WriteObject méthode pour conserver les données. Pour récupérer des données, créez un objet approprié pour lire le format de données (tel qu’un XmlDictionaryReader document XML) et appelez la ReadObject méthode.
Pour plus d’informations sur l’utilisation de l’élément DataContractSerializer, consultez Sérialisation et Désérialisation.
Vous pouvez définir le type d’un sérialiseur de contrat de données à l’aide de l’élément <dataContractSerializer> dans un fichier de configuration d’application cliente.
Préparer des classes pour la sérialisation ou la désérialisation
Le DataContractSerializer est utilisé en combinaison avec les classes DataContractAttribute et DataMemberAttribute. Pour préparer une classe à la sérialisation, appliquez DataContractAttribute à la classe. Pour chaque membre de la classe qui retourne des données que vous souhaitez sérialiser, appliquez le DataMemberAttribute. Vous pouvez sérialiser des champs et des propriétés, quelle que soit l'accessibilité : privés, protégés, internes, internes protégés ou publics.
Par exemple, votre schéma spécifie une Customer propriété avec une ID propriété, mais vous disposez déjà d’une application existante qui utilise un type nommé Person avec une Name propriété. Pour créer un type conforme au contrat, appliquez d’abord la classe DataContractAttribute. Appliquez ensuite la DataMemberAttribute valeur à chaque champ ou propriété que vous souhaitez sérialiser.
Note
Vous pouvez appliquer le DataMemberAttribute aux membres privés et publics.
Le format final du code XML n’a pas besoin d’être texte. Au lieu de cela, les DataContractSerializer données sont écrites comme un ensemble d’informations XML, ce qui vous permet d’écrire les données dans n’importe quel format reconnu par le XmlReader et XmlWriter. Il est recommandé d’utiliser les classes XmlDictionaryReader et XmlDictionaryWriter pour lire et écrire, car les deux sont optimisées pour fonctionner avec le DataContractSerializer.
Si vous créez une classe qui a des champs ou des propriétés qui doivent être renseignés avant la sérialisation ou la désérialisation, utilisez des attributs de rappel, comme décrit dans Version-Tolerant rappels de sérialisation.
Ajouter à la collection de types connus
Lors de la sérialisation ou de la désérialisation d’un objet, il est nécessaire que le type soit « connu » à l’objet DataContractSerializer. Commencez par créer une instance d’une classe qui implémente IEnumerable<T> (par exemple List<T>) et ajoutez les types connus à la collection. Créez ensuite une instance de DataContractSerializer en utilisant l'une des surcharges qui acceptent IEnumerable<T> (par exemple, DataContractSerializer(Type, IEnumerable<Type>)).
Note
Contrairement aux autres types primitifs, la DateTimeOffset structure n’est pas un type connu par défaut. Elle doit donc être ajoutée manuellement à la liste des types connus (voir Types connus du contrat de données).
Compatibilité vers l’avant
DataContractSerializer comprend les contrats de données qui ont été conçus pour être compatibles avec les futures versions du contrat. Ces types implémentent l’interface IExtensibleDataObject . L’interface comprend la ExtensionData propriété qui retourne un ExtensionDataObject objet. Pour plus d’informations, consultez Forward-Compatible Contrats de données.
Constructeurs
| Nom | Description |
|---|---|
| DataContractSerializer(Type, DataContractSerializerSettings) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type et des paramètres spécifiés. |
| DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié. Cette méthode spécifie également une liste de types connus qui peuvent être présents dans le graphique d’objets, le nombre maximal d’éléments de graphique à sérialiser, les paramètres pour ignorer les données inattendues, s’il faut utiliser des constructions XML non standard pour conserver les données de référence d’objet dans le graphique, une substitution pour la sérialisation personnalisée et une alternative pour les déclarations de mappage |
| DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié. Cette méthode spécifie également une liste de types connus qui peuvent être présents dans le graphique d’objets, le nombre maximal d’éléments de graphe à sérialiser, les paramètres pour ignorer les données inattendues, s’il faut utiliser des constructions XML non standard pour conserver les données de référence d’objet dans le graphique et une substitution pour la sérialisation personnalisée. |
| DataContractSerializer(Type, IEnumerable<Type>) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié et une collection de types connus qui peuvent être présents dans le graphique d’objets. |
| DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié. Cette méthode spécifie également une liste de types connus qui peuvent être présents dans le graphique d’objets, le nombre maximal d’éléments de graphe à sérialiser, les paramètres pour ignorer les données inattendues, s’il faut utiliser des constructions XML non standard pour conserver les données de référence d’objet dans le graphique, une substitution pour la sérialisation personnalisée, l’élément XML et l’espace de noms qui contient le contenu, et une alternative pour les déclarations de mappage |
| DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié. Cette méthode spécifie également une liste de types connus qui peuvent être présents dans le graphique d’objets, le nombre maximal d’éléments de graphe à sérialiser, les paramètres pour ignorer les données inattendues, s’il faut utiliser des constructions XML non standard pour conserver les données de référence d’objet dans le graphe, une substitution pour la sérialisation personnalisée et l’élément XML et l’espace de noms qui contiennent le contenu. |
| DataContractSerializer(Type, String, String, IEnumerable<Type>) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié. Cette méthode spécifie également l’élément XML racine et l’espace de noms dans deux paramètres de chaîne, ainsi qu’une liste de types connus qui peuvent être présents dans le graphe d’objets. |
| DataContractSerializer(Type, String, String) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié à l’aide de l’élément racine XML et de l’espace de noms fournis. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié. Cette méthode spécifie également une liste de types connus qui peuvent être présents dans le graphique d’objets, le nombre maximal d’éléments de graphe à sérialiser, les paramètres pour ignorer les données inattendues, s’il faut utiliser des constructions XML non standard pour conserver les données de référence d’objet dans le graphique, une substitution pour la sérialisation personnalisée, les paramètres de ce qui spécifient l’élément XML et l’espace de XmlDictionaryString noms qui contient le contenu, et une alternative pour les déclarations de mappage |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié. Cette méthode spécifie également une liste de types connus qui peuvent être présents dans le graphique d’objets, le nombre maximal d’éléments de graphe à sérialiser, les paramètres pour ignorer les données inattendues, s’il faut utiliser des constructions XML non standard pour conserver les données de référence d’objet dans le graphique, une substitution pour la sérialisation personnalisée et les paramètres de ce qui spécifient l’élément XML et l’espace de XmlDictionaryString noms qui contiennent le contenu. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié. Cette méthode spécifie également l’élément XML racine et l’espace de noms dans deux XmlDictionaryString paramètres, ainsi qu’une liste de types connus qui peuvent être présents dans le graphique d’objets. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié à l’aide de l’élément racine XML et de l’espace de noms spécifiés par le biais des paramètres de type XmlDictionaryString. |
| DataContractSerializer(Type) |
Initialise une nouvelle instance de la DataContractSerializer classe pour sérialiser ou désérialiser un objet du type spécifié. |
Propriétés
| Nom | Description |
|---|---|
| DataContractResolver |
Obtient le composant utilisé pour mapper |
| DataContractSurrogate |
Obtient un type de substitution qui peut étendre le processus de sérialisation ou de désérialisation. |
| IgnoreExtensionDataObject |
Obtient une valeur qui spécifie s’il faut ignorer les données fournies par une extension de la classe lorsque la classe est sérialisée ou désérialisée. |
| KnownTypes |
Obtient une collection de types qui peuvent être présents dans le graphe d’objet sérialisé à l’aide DataContractSerializerde cette instance du . |
| MaxItemsInObjectGraph |
Obtient le nombre maximal d’éléments d’un graphique d’objet à sérialiser ou désérialiser. |
| PreserveObjectReferences |
Obtient une valeur qui spécifie s’il faut utiliser des constructions XML non standard pour conserver les données de référence d’objet. |
| SerializeReadOnlyTypes |
Obtient une valeur qui spécifie si les types en lecture seule sont sérialisés. |
Méthodes
| Nom | Description |
|---|---|
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| IsStartObject(XmlDictionaryReader) |
Détermine si l’objet XmlDictionaryReader est positionné sur un objet pouvant être désérialisé. |
| IsStartObject(XmlReader) |
Détermine si l’objet XmlReader est positionné sur un objet pouvant être désérialisé. |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| ReadObject(Stream) |
Lit le flux XML ou le document avec un Stream objet désérialisé et retourne l’objet désérialisé. (Hérité de XmlObjectSerializer) |
| ReadObject(XmlDictionaryReader, Boolean, DataContractResolver) |
Lit un document XML ou un flux de documents et retourne l’objet désérialisé. La méthode inclut un paramètre pour spécifier si le nom de l’objet est vérifié est validé et un programme de résolution pour les déclarations de mappage |
| ReadObject(XmlDictionaryReader, Boolean) |
Lit le flux XML avec un objet désérialisé et spécifie également si une vérification est effectuée pour vérifier le nom de XmlDictionaryReader l’objet avant de lire sa valeur. |
| ReadObject(XmlDictionaryReader) |
Lit le document ou le flux XML avec un XmlDictionaryReader objet désérialisé et retourne l’objet désérialisé. (Hérité de XmlObjectSerializer) |
| ReadObject(XmlReader, Boolean) |
Lit le flux XML avec un objet désérialisé et spécifie également si une vérification est effectuée pour vérifier le nom de XmlReader l’objet avant de lire sa valeur. |
| ReadObject(XmlReader) |
Lit le flux XML avec un XmlReader objet désérialisé et retourne l’objet désérialisé. |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
| WriteEndObject(XmlDictionaryWriter) |
Écrit l’élément XML fermant à l’aide d’un XmlDictionaryWriter. |
| WriteEndObject(XmlWriter) |
Écrit l’élément XML fermant à l’aide d’un XmlWriter. |
| WriteObject(Stream, Object) |
Écrit le contenu complet (début, contenu et fin) de l’objet dans le document XML ou le flux avec le fichier spécifié Stream. (Hérité de XmlObjectSerializer) |
| WriteObject(XmlDictionaryWriter, Object, DataContractResolver) |
Écrit toutes les données d’objet (élément XML de démarrage, contenu et élément englobant) dans un document ou un flux XML à l’aide du XmlDictionaryWriter spécifié. La méthode inclut un programme de résolution pour les déclarations de mappage |
| WriteObject(XmlDictionaryWriter, Object) |
Écrit le contenu complet (début, contenu et fin) de l’objet dans le document XML ou le flux avec le fichier spécifié XmlDictionaryWriter. (Hérité de XmlObjectSerializer) |
| WriteObject(XmlWriter, Object) |
Écrit toutes les données d’objet (élément XML de démarrage, contenu et élément fermant) dans un document OU un flux XML avec un XmlWriter. |
| WriteObjectContent(XmlDictionaryWriter, Object) |
Écrit le contenu XML à l’aide d’un XmlDictionaryWriter. |
| WriteObjectContent(XmlWriter, Object) |
Écrit le contenu XML à l’aide d’un XmlWriter. |
| WriteStartObject(XmlDictionaryWriter, Object) |
Écrit l’élément XML ouvrant à l’aide d’un XmlDictionaryWriter. |
| WriteStartObject(XmlWriter, Object) |
Écrit l’élément XML ouvrant à l’aide d’un XmlWriter. |
Méthodes d’extension
| Nom | Description |
|---|---|
| GetSerializationSurrogateProvider(DataContractSerializer) |
Retourne le fournisseur de sérialisation de substitution pour ce sérialiseur. |
| SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider) |
Spécifie un fournisseur de sérialisation de substitution pour ce DataContractSerializer. |
S’applique à
Cohérence de thread
Les instances de cette classe sont thread-safe, sauf lorsque l’instance est utilisée avec une implémentation du IDataContractSurrogate ou DataContractResolver.