方法: クラスまたは構造体に基本的なデータ コントラクトを作成する
このトピックでは、クラスまたは構造体を使用してデータ コントラクトを作成する基本的な手順を示します。 データ コントラクトとその使用方法の詳細については、「データ コントラクトの使用」を参照してください。
基本的な 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