Практическое руководство. Создание базового контракта данных для класса или структуры
В этом разделе приведены основные этапы создания контракта данных с использованием класса или структуры. Дополнительные сведения о контрактах данных и их использовании см. в разделе "Использование контрактов данных".
Руководство по созданию базовой службы Windows Communication Foundation (WCF) и клиента см. в руководстве по началу работы. Рабочий пример приложения, состоящего из базовой службы и клиента, см. в разделе "Базовый контракт данных".
Создание базового контракта данных для класса или структуры
Объявите, что типы имеют контракт данных, применив атрибут DataContractAttribute к классу. Обратите внимание, что все открытые типы, включая типы без атрибутов, сериализуемы. Сериализатор DataContractSerializer выводит контракт данных при отсутствии атрибута DataContractAttribute. Дополнительные сведения см. в разделе "Сериализуемые типы".
Определите члены (свойства, поля или события), сериализуемые путем применения атрибута 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; }
}
}
<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