Condividi tramite


Procedura: creare un contratto dati di base per una classe o una struttura

In questo argomento vengono illustrati i passaggi di base per creare un contratto dati usando una classe o una struttura. Per altre informazioni sui contratti dati e su come vengono usati, vedere Uso dei contratti dati.

Per un'esercitazione che illustra i passaggi per la creazione di un servizio e un client Windows Communication Foundation (WCF) di base, vedere l'esercitazione introduttiva. Per un'applicazione di esempio funzionante costituita da un servizio di base e un client, vedere Contratti di dati di base.

Per creare un contratto dati di base per una classe o una struttura

  1. Dichiarare che il tipo è associato a un contratto dati applicando l'attributo DataContractAttribute alla classe. Si noti che tutti i tipi pubblici, inclusi quelli senza attributi, sono serializzabili. Tramite DataContractSerializer viene dedotto un contratto dati se è assente l'attributo DataContractAttribute. Per altre informazioni, vedere Tipi serializzabili.

  2. Definire i membri (proprietà, campi o eventi) serializzati applicando l'attributo DataMemberAttribute a ogni membro. Questi membri vengono definiti membri dati. Per impostazione predefinita, tutti i tipi pubblici sono serializzabili. Per altre informazioni, vedere Tipi serializzabili.

    Nota

    È possibile applicare l'attributo DataMemberAttribute ai campi privati, per esporre i dati ad altri utenti. Assicurarsi che il membro non contenga dati riservati.

Esempio

Nell'esempio seguente viene illustrato come creare un contratto dati per il tipo Person applicando gli attributi DataContractAttribute e DataMemberAttribute alla classe e ai relativi membri.

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

Vedi anche