방법: 클래스 또는 구조체에 대한 기본 데이터 계약 만들기
이 항목에서는 클래스 또는 구조를 사용하여 데이터 계약을 만드는 기본 단계를 보여 줍니다. 데이터 계약 및 사용 방법에 대한 자세한 내용은 데이터 계약 사용을 참조하세요.
기본 WCF(Windows Communication Foundation) 서비스 및 클라이언트를 만드는 단계를 안내하는 자습서는 시작 자습서를 참조하세요. 기본 서비스 및 클라이언트로 구성된 작업 샘플 애플리케이션에 대해서는 기본 데이터 계약을 참조하세요.
클래스 또는 구조체에 대한 기본 데이터 계약을 만들려면
DataContractAttribute 특성을 클래스에 적용하여 형식에 데이터 계약이 있음을 선언합니다. 특성이 없는 경우를 비롯한 모든 public 형식을 serialize할 있습니다. DataContractSerializer 특성이 없는 경우 DataContractAttribute는 데이터 계약을 유추합니다. 자세한 내용은 직렬화 가능 형식을 참조하세요.
DataMemberAttribute 특성을 각 멤버에 적용하여 serialize되는 멤버(속성, 필드 또는 이벤트)를 정의합니다. 이러한 멤버를 데이터 멤버라고 합니다. 기본적으로 모든 public 형식을 serialize할 있습니다. 자세한 내용은 직렬화 가능 형식을 참조하세요.
참고 항목
DataMemberAttribute 특성을 private 필드에 적용하여 데이터가 다른 사용자에게 노출되게 할 수 있습니다. 멤버에 중요한 데이터가 포함되지 않도록 해야 합니다.
예시
다음 예제에서는 클래스 및 해당 멤버에 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