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
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

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.

System.Object
  System.Attribute
    System.Runtime.Serialization.DataMemberAttribute

Espace de noms :  System.Runtime.Serialization
Assembly :  System.Runtime.Serialization (dans System.Runtime.Serialization.dll)
[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field, Inherited = false, 
	AllowMultiple = false)]
public sealed class DataMemberAttribute : Attribute

Le type DataMemberAttribute expose les membres suivants.

  Nom Description
Méthode publique ms574795.PortableClassLibrary(fr-fr,VS.100).gif DataMemberAttribute Initialise une nouvelle instance de la classe DataMemberAttribute.
Début
  Nom Description
Propriété publique ms574795.PortableClassLibrary(fr-fr,VS.100).gif 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é.
Propriété publique ms574795.PortableClassLibrary(fr-fr,VS.100).gif 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.
Propriété publique ms574795.PortableClassLibrary(fr-fr,VS.100).gif Name Obtient ou définit un nom de membre de données.
Propriété publique ms574795.PortableClassLibrary(fr-fr,VS.100).gif Order Obtient ou définit l'ordre de sérialisation et de désérialisation d'un membre.
Propriété publique TypeId Lors de son implémentation dans une classe dérivée, obtient un identificateur unique pour Attribute. (Hérité de Attribute.)
Début
  Nom Description
Méthode publique ms574795.PortableClassLibrary(fr-fr,VS.100).gif Equals Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode protégée ms574795.PortableClassLibrary(fr-fr,VS.100).gif 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.)
Méthode publique ms574795.PortableClassLibrary(fr-fr,VS.100).gif GetHashCode Retourne le code de hachage pour cette instance. (Hérité de Attribute.)
Méthode publique ms574795.PortableClassLibrary(fr-fr,VS.100).gif GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique 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.)
Méthode publique 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.)
Méthode protégée ms574795.PortableClassLibrary(fr-fr,VS.100).gif MemberwiseClone Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publique ms574795.PortableClassLibrary(fr-fr,VS.100).gif ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Début
  Nom Description
Implémentation d'interface explicite Méthode privée _Attribute.GetIDsOfNames Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.)
Implémentation d'interface explicite Méthode privée _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.)
Implémentation d'interface explicite Méthode privée _Attribute.GetTypeInfoCount Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.)
Implémentation d'interface explicite Méthode privée _Attribute.Invoke Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.)
Début

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.

Remarque Attention 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 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));
    }

}


.NET Framework

Pris en charge dans : 4, 3.5, 3.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Pris en charge dans :

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.
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ