Прочитать на английском

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


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

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

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

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

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

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

    Примечание

    Можно применить атрибут DataMemberAttribute к закрытым полям, в результате чего данные будут предоставлены другим пользователям. Убедитесь, что член не содержит конфиденциальных данных.

Пример

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

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

См. также


Дополнительные ресурсы

События

MCP DevDays

26 июл., 00 - 26 июл., 00

Ускорение производительности, создание будущего

Register Today