Procedimiento para crear un contrato de datos básico para una clase o estructura

En este tema se muestran los pasos básicos para crear un contrato de datos usando una clase o estructura. Para obtener más información sobre contratos de datos y su uso, consulte Uso de contratos de datos.

Para obtener un tutorial que recorre los pasos de la creación de un servicio y un cliente Windows Communication Foundation (WCF) básicos, consulte el tutorial de introducción. Para obtener una aplicación de ejemplo operativa que consta de un servicio y un cliente básicos, consulte Contrato de datos básico.

Crear un contrato de datos básicos para una clase o estructura

  1. Declare que el tipo tiene un contrato de datos aplicando el atributo DataContractAttribute a la clase. Observe que todos los tipos públicos, incluidos aquéllos sin atributos, son serializables. DataContractSerializer deduce un contrato de datos si el atributo DataContractAttribute está ausente. Para obtener más información, consulte Tipos serializables.

  2. Defina los miembros (propiedades, campos o eventos) que se serializan aplicando el atributo DataMemberAttribute a cada miembro. Estos miembros se denominan miembros de datos. De forma predeterminada, todos los tipos públicos son serializables. Para obtener más información, consulte Tipos serializables.

    Nota

    Puede aplicar el atributo DataMemberAttribute a los campos privados y, de este modo, se expondrán los datos a otros. Asegúrese de que el miembro no contiene información confidencial.

Ejemplo

En el ejemplo siguiente, se muestra cómo crear un contrato de datos para el tipo Person mediante la aplicación de los atributos DataContractAttribute y DataMemberAttribute a la clase y sus miembros.

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

Vea también