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