Поделиться через


Как создать базовый контракт данных для класса или структуры

В данном разделе представлены основные этапы создания контракта данных с использованием класса или структуры. Дополнительные сведения контрактах данных и способах их использования см. в разделе Использование контрактов данных.

Этапы создания базовой службы и клиента Windows Communication Foundation (WCF) см. в разделе Учебник по началу работы. Пример образца работающего приложения, состоящего из базовой службы и клиента, см. в разделе Базовый контракт данных.

Создание базового контракта данных для класса или структуры

  1. Объявите, что типы имеют контракт данных, применив атрибут DataContractAttribute к классу. Обратите внимание, что все открытые типы, включая типы без атрибутов, сериализуемы. Сериализатор DataContractSerializer выводит контракт данных при отсутствии атрибута DataContractAttribute. Дополнительные сведения см. в разделе см. в разделе Сериализуемые типы.

  2. Определите члены (свойства, поля или события), сериализуемые путем применения атрибута DataMemberAttribute к каждому члену. Эти члены называются членами данных. По умолчанию все открытые типы сериализуемы. Дополнительные сведения см. в разделе см. в разделе Сериализуемые типы.

    ms733811.note(ru-ru,VS.100).gifПримечание
    Можно применить атрибут DataMemberAttribute к закрытым полям, в результате чего данные будут предоставлены другим пользователям. Убедитесь, что член не содержит конфиденциальных данных.

Пример

В следующем примере показано создание контракта данных для типа Person путем применения атрибутов DataContractAttribute и DataMemberAttribute к классу и его членам.

<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 
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; }
    }
}

См. также

Задачи

Образец для начала работы

Справочник

DataContractAttribute
DataMemberAttribute

Основные понятия

Использование контрактов данных

Другие ресурсы

Учебник по началу работы