Compartilhar via


Como: criar um contrato de dados básicos para uma classe ou estrutura

Este tópico mostra as etapas básicas para criar um contrato de dados usando uma classe ou estrutura. Para obter mais informações sobre contratos de dados, consulte Como usar contratos de dados.

Para obter um tutorial que descreve as etapas de criação de um serviço e cliente básico do Windows Communication Foundation (WCF), consulte o Tutorial de introdução. Para um aplicativo de exemplo funcional que consiste em um serviço e cliente básicos, consulte Contrato de dados básicos.

Para criar um contrato de dados básico para uma classe ou estrutura

  1. Declare que o tipo tem um contrato de dados aplicando o atributo DataContractAttribute à classe. Observe que todos os tipos públicos, incluindo aqueles sem atributos, são serializáveis. O DataContractSerializer infere um contrato de dados se o atributo DataContractAttribute estiver ausente. Para obter mais informações, consulte Tipos serializáveis.

  2. Defina os membros (propriedades, campos ou eventos) que são serializados aplicando o atributo DataMemberAttribute a cada membro. Esses membros são chamados de membros de dados. Por padrão, todos os tipos públicos são serializáveis. Para obter mais informações, consulte Tipos serializáveis.

    Observação

    Você pode aplicar o atributo DataMemberAttribute a campos privados, fazendo com que os dados sejam expostos a outros. Certifique-se de que o membro não contenha dados confidenciais.

Exemplo

O exemplo a seguir mostra como criar um contrato de dados para o tipo Person aplicando os atributos DataContractAttribute e DataMemberAttribute à classe e seus membros.

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

Confira também