Instrukcje: Tworzenie podstawowego kontraktu danych dla klasy lub struktury
W tym temacie przedstawiono podstawowe kroki tworzenia kontraktu danych przy użyciu klasy lub struktury. Aby uzyskać więcej informacji na temat kontraktów danych i sposobu ich używania, zobacz Using Data Contracts (Korzystanie z kontraktów danych).
Aby zapoznać się z samouczkiem, który zawiera instrukcje tworzenia podstawowej usługi i klienta programu Windows Communication Foundation (WCF), zobacz Samouczek wprowadzający. Aby zapoznać się z działającą przykładową aplikacją składającą się z podstawowej usługi i klienta, zobacz Podstawowy kontrakt danych.
Aby utworzyć podstawowy kontrakt danych dla klasy lub struktury
Zadeklaruj, że typ ma kontrakt danych, stosując DataContractAttribute atrybut do klasy. Należy pamiętać, że wszystkie typy publiczne, w tym te bez atrybutów, można serializować. Wywnioskuje DataContractSerializer kontrakt danych, jeśli DataContractAttribute atrybut jest nieobecny. Aby uzyskać więcej informacji, zobacz Typy możliwe do serializacji.
Zdefiniuj elementy członkowskie (właściwości, pola lub zdarzenia), które są serializowane, stosując DataMemberAttribute atrybut do każdego elementu członkowskiego. Te elementy członkowskie są nazywane członkami danych. Domyślnie wszystkie typy publiczne można serializować. Aby uzyskać więcej informacji, zobacz Typy możliwe do serializacji.
Uwaga
Atrybut można zastosować DataMemberAttribute do pól prywatnych, co powoduje uwidocznienie danych innym osobom. Upewnij się, że element członkowski nie zawiera poufnych danych.
Przykład
W poniższym przykładzie pokazano, jak utworzyć kontrakt danych dla Person
typu przez zastosowanie DataContractAttribute atrybutów i DataMemberAttribute do klasy i jej składowych.
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