作法:建立類別或結構的基本資料合約

本主題將示範使用類別或結構來建立資料合約的基本步驟。 如需資料合約及其使用方式的詳細資訊,請參閱使用資料合約

如需逐步說明建立基本 Windows Communication Foundation (WCF) 服務和用戶端之步驟的教學課程,請參閱使用者入門教學課程。 如需由基本服務和用戶端組成的工作範例應用程式,請參閱基本資料合約

建立類別或結構的基本資料合約

  1. 請將 DataContractAttribute 屬性套用至類別,以宣告型別具有資料合約。 請注意,所有公用型別 (包括不含屬性的公用型別) 都是可序列化的。 如果沒有 DataContractSerializer 屬性,DataContractAttribute 會推斷資料合約。 如需詳細資訊,請參閱可序列化類型

  2. 藉由將 DataMemberAttribute 屬性 (Attribute) 套用至各個成員,定義序列化的成員 (屬性 (Property)、欄位或事件)。 這些成員稱為資料成員。 根據預設,所有公用型別都是可序列化的。 如需詳細資訊,請參閱可序列化型別

    注意

    您可以將 DataMemberAttribute 屬性套用至私用欄位,造成資料對他人公開。 請確定成員沒有包含敏感性資料。

範例

下列範例說明如何將 PersonDataContractAttribute 屬性套用至類別和其成員,以建立 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

另請參閱