Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
DataMemberAttribute, classe
Lors de l'application au membre d'un type, spécifie que le membre fait partie d'un contrat de données et qu'il est sérialisable par le DataContractSerializer.
Assembly : System.Runtime.Serialization (dans System.Runtime.Serialization.dll)
Le type DataMemberAttribute expose les membres suivants.
| Nom | Description | |
|---|---|---|
|
DataMemberAttribute | Initialise une nouvelle instance de la classe DataMemberAttribute. |
| Nom | Description | |
|---|---|---|
|
EmitDefaultValue | Obtient ou définit une valeur qui spécifie s'il faut sérialiser la valeur par défaut pour une propriété ou un champ qui est sérialisé. |
|
IsRequired | Obtient ou définit une valeur qui indique au moteur de sérialisation que le membre doit être présent lors de la lecture ou de la désérialisation. |
|
Name | Obtient ou définit un nom de membre de données. |
|
Order | Obtient ou définit l'ordre de sérialisation et de désérialisation d'un membre. |
|
TypeId | Lors de son implémentation dans une classe dérivée, obtient un identificateur unique pour Attribute. (Hérité de Attribute.) |
| Nom | Description | |
|---|---|---|
|
Equals | Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.) |
|
Finalize | Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.) |
|
GetHashCode | Retourne le code de hachage pour cette instance. (Hérité de Attribute.) |
|
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) |
|
IsDefaultAttribute | En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute.) |
|
Match | En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.) |
|
MemberwiseClone | Crée une copie superficielle de l'objet Object actif. (Hérité de Object.) |
|
ToString | Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.) |
| Nom | Description | |
|---|---|---|
|
_Attribute.GetIDsOfNames | Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.) |
|
_Attribute.GetTypeInfo | Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute.) |
|
_Attribute.GetTypeInfoCount | Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.) |
|
_Attribute.Invoke | Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.) |
Appliquez l'attribut DataMemberAttribute conjointement au DataContractAttribute pour identifier les membres d'un type qui font partie d'un contrat de données. L'un des sérialiseurs qui peuvent sérialiser des contrats de données est le DataContractSerializer.
Le modèle de contrat de données est un modèle « d'abonnement ». L'application du DataMemberAttribute à un champ ou à une propriété spécifie explicitement que la valeur de membre sera sérialisée. Par opposition, le BinaryFormatter sérialise les champs publics et privés d'un type et le XmlSerializer sérialise uniquement les champs et propriétés publics d'un type.
Attention
|
|---|
|
Vous pouvez appliquer le DataMemberAttribute aux champs ou propriétés privés. Soyez conscient que les données retournées par le membre (même s'il est privé) seront sérialisées et désérialisées, et que par conséquent elles peuvent être affichées ou interceptées par un utilisateur ou un processus malveillant. |
Par défaut, le nom du membre CLR est utilisé comme nom du membre de données. En définissant la propriété Name, vous pouvez personnaliser le nom du membre de données. Cette opération peut être utilisée pour fournir un nom qui ne peut pas être autorisé comme nom du membre CLR. Lors du mappage à XML à l'aide du DataContractSerializer, ce nom est utilisé comme nom de l'élément de schéma dans un type.
Remarque
|
|---|
|
Les propriétés auxquelles l'attribut DataMemberAttribute a été appliqué doivent présenter les champs get et set, et non le champ get ou set uniquement. |
Pour plus d'informations sur les contrats de données et les membres de données, consultez Using Data Contracts. Pour plus d'informations sur les noms de membres, consultez Data Member Default Values.
L'exemple suivant illustre deux types auxquels les attributs DataContractAttribute et DataMemberAttribute ont été appliqués. La propriété Name a la valeur "Customer".
using System; using System.Collections; using System.IO; using System.Runtime.Serialization; using System.Xml; // You must apply a DataContractAttribute or SerializableAttribute // to a class to have it serialized by the DataContractSerializer. [DataContract()] class Person : IExtensibleDataObject { private string LastNameValue; // Apply the DataMemberAttribute to fields (or properties) // that must be serialized. [DataMember()] public string FirstName; [DataMember] public string LastName { get { return LastNameValue; } set { LastNameValue = value; } } [DataMember(Name = "ID")] public int IdNumber; // Note that you can apply the DataMemberAttribute to // a private field as well. [DataMember] private string Secret; public Person(string newfName, string newLName, int newIdNumber) { FirstName = newfName; LastName = newLName; IdNumber = newIdNumber; Secret = newfName + newLName + newIdNumber; } // The extensionDataValue field holds data from future versions // of the type. This enables this type to be compatible with // future versions. The field is required to implement the // IExtensibleDataObject interface. private ExtensionDataObject extensionDatavalue; public ExtensionDataObject ExtensionData { get { return extensionDatavalue; } set { extensionDatavalue = value; } } } public class Test { public static void Main(string[] args) { try { WriteObject(@"DataMemberAttributeExample.xml"); ReadObject(@"DataMemberAttributeExample.xml"); } catch (Exception exc) { Console.WriteLine( "The serialization operation failed: {0} StackTrace: {1}", exc.Message, exc.StackTrace); } finally { Console.WriteLine("Press <Enter> to exit...."); Console.ReadLine(); } } public static void WriteObject(string filename) { // Create a new instance of the Person class. Person p1 = new Person("Zighetti", "Barbara", 101); FileStream writer = new FileStream(filename, FileMode.OpenOrCreate); DataContractSerializer ser = new DataContractSerializer(typeof(Person)); ser.WriteObject(writer, p1); writer.Close(); } public static void ReadObject(string filename) { // Deserialize an instance of the Person class // from an XML file. FileStream fs = new FileStream(filename, FileMode.OpenOrCreate); DataContractSerializer ser = new DataContractSerializer(typeof(Person)); // Deserialize the data and read it from the instance. Person deserializedPerson = (Person)ser.ReadObject(fs); fs.Close(); Console.WriteLine(String.Format("{0} {1}, ID: {2}", deserializedPerson.FirstName, deserializedPerson.LastName, deserializedPerson.IdNumber)); } }
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Attention
Remarque