Procédure : créer un contrat de données de base pour une classe ou structure

Cette rubrique illustre les étapes de base pour créer un contrat de données à l'aide d'une classe ou d'une structure. Pour plus d’informations sur les contrats de données et leur utilisation, consultez Utilisation de contrats de données.

Pour accéder à un tutoriel présentant les étapes de la création d’un service et d’un client Windows Communication Foundation (WCF) de base, consultez le Tutoriel Bien démarrer. Pour obtenir un exemple d’application fonctionnel qui se compose d’un service et d’un client de base, consultez Contrat de données de base.

Pour créer un contrat de données de base destiné à une classe ou une structure

  1. Déclarez que le type a un contrat de données en appliquant l'attribut DataContractAttribute à la classe. Notez que tous les types publics, y compris ceux sans attributs, sont sérialisables. Le DataContractSerializer déduit un contrat de données si l'attribut DataContractAttribute est absent. Pour plus d’informations, consultez Types sérialisables.

  2. Définissez les membres (propriétés, champs ou événements) sérialisés en appliquant l'attribut DataMemberAttribute à chaque membre. Ces membres sont appelés des membres de données. Par défaut, tous les types publics sont sérialisables. Pour plus d’informations, consultez Types sérialisables.

    Notes

    Vous pouvez appliquer l'attribut DataMemberAttribute aux champs privés, ce qui expose les données aux autres. Vérifiez que le membre ne contient pas de données sensibles.

Exemple

L'exemple suivant montre comment créer un contrat de données pour le type Person en appliquant les attributs DataContractAttribute et DataMemberAttribute à la classe et à ses membres.

using System;
using System.Runtime.Serialization;

[DataContract]
public class Person
{
    // This member is serialized.
    [DataMember]
    internal string FullName;

    // This is serialized even though it is private.
    [DataMember]
    private int Age;

    // This is not serialized because the DataMemberAttribute
    // has not been applied.
    private string MailingAddress;

    // This is not serialized, but the property is.
    private string telephoneNumberValue;

    [DataMember]
    public string TelephoneNumber
    {
        get { return telephoneNumberValue; }
        set { telephoneNumberValue = value; }
    }
}
<DataContract()> _
Public Class Person
    ' This member is serialized.
    <DataMember()> _
    Friend FullName As String

    ' This is serialized even though it is private.
    <DataMember()> _
    Private Age As Integer

    ' This is not serialized because the DataMemberAttribute 
    ' has not been applied.
    Private MailingAddress As String

    ' This is not serialized, but the property is.
    Private telephoneNumberValue As String

    <DataMember()> _
    Public Property TelephoneNumber() As String
        Get
            Return telephoneNumberValue
        End Get
        Set
            telephoneNumberValue = value
        End Set
    End Property
End Class

Voir aussi