Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Par défaut, la DataContractSerializer sérialise tous les types visibles publiquement. Toutes les propriétés et champs de lecture/écriture publics du type sont sérialisés.
Vous pouvez modifier le comportement par défaut en appliquant les attributs DataContractAttribute et DataMemberAttribute aux types et aux membres. Cette fonctionnalité peut être utile dans les situations où vous avez des types qui ne sont pas sous votre contrôle et ne peuvent pas être modifiés pour ajouter des attributs. Le DataContractSerializer reconnaît ces types « non marqués ».
Valeurs par défaut de sérialisation
Vous pouvez appliquer les attributs DataContractAttribute et DataMemberAttribute pour contrôler ou personnaliser explicitement la sérialisation des types et des membres. En outre, vous pouvez appliquer ces attributs à des champs privés. Toutefois, même les types qui ne sont pas marqués avec ces attributs sont sérialisés et désérialisés. Les règles et exceptions suivantes s’appliquent :
Déduit DataContractSerializer un contrat de données à partir de types sans attributs à l’aide des propriétés par défaut des types nouvellement créés.
Tous les champs publics et toutes les propriétés avec public
getetsetméthodes sont sérialisées, sauf si vous appliquez l’attribut IgnoreDataMemberAttribute à ce membre.La sémantique de sérialisation est similaire à celle du XmlSerializer.
Dans les types non délimités, seuls les types publics avec des constructeurs qui n’ont pas de paramètres sont sérialisés. L’exception à cette règle est ExtensionDataObject utilisée avec l’interface IExtensibleDataObject .
Les champs en lecture seule, les propriétés sans méthode
getouset, et les propriétés avec des méthodessetougetinternes ou privées ne sont pas sérialisées. Ces propriétés sont ignorées et aucune exception n'est levée, sauf dans le cas des collections get-only.XmlSerializerles attributs (tels que
XmlElement, ,XmlAttributeXmlIgnore,XmlIncludeetc.) sont ignorés.Si vous n’appliquez pas l’attribut DataContractAttribute à un type donné, le sérialiseur ignore tout membre de ce type auquel l’attribut DataMemberAttribute est appliqué.
La KnownTypes propriété est prise en charge dans les types non marqués avec l’attribut DataContractAttribute . Cela inclut la prise en charge de l’attribut KnownTypeAttribute sur les types non marqués.
Pour « désactiver » le processus de sérialisation pour les membres publics, les propriétés ou les champs, appliquez l’attribut IgnoreDataMemberAttribute à ce membre.
Héritage
Les types non attribués (types sans DataContractAttribute attribut) peuvent hériter de types qui ont cet attribut . Toutefois, l’inverse n’est pas autorisé : les types avec l’attribut ne peuvent pas hériter de types non affectés. Cette règle est appliquée principalement pour garantir la compatibilité descendante avec le code écrit dans les versions antérieures de .NET Framework.