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
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.
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