Partilhar 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 e como eles são usados, consulte Usando contratos de dados.

Para obter um tutorial que percorre 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 de trabalho que consiste em um serviço básico e cliente, consulte Contrato de dados básico.

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 DataContractAttribute atributo à 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 DataContractAttribute atributo 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 DataMemberAttribute atributo 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.

    Nota

    Você pode aplicar o DataMemberAttribute atributo a campos privados, fazendo com que os dados sejam expostos a outras pessoas. Certifique-se de que o membro não contém dados confidenciais.

Exemplo

O exemplo a seguir mostra como criar um contrato de dados para o Person tipo aplicando os DataContractAttribute atributos 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

Consulte também