エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

DataContractAttribute クラス

2013/12/12

型がデータ コントラクトを定義または実装し、DataContractSerializer などのシリアライザーによってシリアル化できるよう指定します。

System.Object
  System.Attribute
    System.Runtime.Serialization.DataContractAttribute

Namespace:  System.Runtime.Serialization
アセンブリ:  System.Runtime.Serialization (System.Runtime.Serialization.dll 内)

[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Enum|AttributeTargets.Struct, Inherited = false, 
	AllowMultiple = false)]
public sealed class DataContractAttribute : Attribute

DataContractAttribute 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドDataContractAttributeDataContractAttribute クラスの新しいインスタンスを初期化します。
このページのトップへ

  名前説明
パブリック プロパティIsReferenceオブジェクト参照データを維持するかどうかを示す値を取得または設定します。
パブリック プロパティName型のデータ コントラクトの名前を取得または設定します。
パブリック プロパティNamespaceその型のデータ コントラクトの名前空間を取得または設定します。
このページのトップへ

  名前説明
パブリック メソッドEqualsインフラストラクチャ。 対象のインスタンスが、指定したオブジェクトに等しいかどうかを示す値を返します。 (Attribute から継承されます。)
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドGetHashCodeこのインスタンスのハッシュ コードを返します。 (Attribute から継承されます。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッドMatch派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (Attribute から継承されます。)
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッドToString現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
このページのトップへ

DataContractSerializer によるシリアル化および逆シリアル化の操作に使用される型 (クラス、構造、または列挙) に、DataContractAttribute 属性を適用します。Windows Phone インフラストラクチャを使用してメッセージを送受信する場合は、メッセージで送信されたデータを保持および操作する任意のクラスに DataContractAttribute を適用することもできます。

また、シリアル化したい値を保持するすべてのフィールド、プロパティ、またはイベントにも DataMemberAttribute を適用すべきです。DataContractAttribute を適用することによって、DataContractSerializer を明示的に有効にして、データをシリアル化および逆シリアル化できます。

データ コントラクト

データ コントラクト は、各フィールドの名前とデータ型が記述されたフィールド セットの抽象的な説明です。データ コントラクトは、異なるプラットフォーム上でサービスの相互運用ができるように、単一の実装とは切り離されて存在します。サービス間で渡されるデータが同一のコントラクトに準拠していれば、すべてのサービスでそのデータを処理できます。この処理は、疎結合システムとも呼ばれています。また、データ コントラクトは、データをアプリケーションで処理できるようにデータの配信方法を指定するという点で、インターフェイスと似ています。たとえば、データ コントラクトで FirstNameLastName という名前の 2 つのテキスト フィールドを含む Person という名前のデータ型を呼び出すことができます。データ コントラクトを作成するには、このクラスに DataContractAttribute を適用し、シリアル化する必要があるすべてのフィールドまたはプロパティに DataMemberAttribute を適用します。シリアル化すると、データは、型に暗黙的に組み込まれたデータ コントラクトに準拠します。

メモメモ:

データ コントラクトは、継承動作に関しては実インターフェイスと明らかに異なります。インターフェイスは、任意の派生型によって継承されます。基本クラスに DataContractAttribute を適用する場合は、派生型は属性または動作を継承しません。ただし、派生型にデータ コントラクトが設定されていれば、基本クラスのデータ メンバーがシリアル化されます。しかし、派生クラスの新しいメンバーをシリアル化する場合は、そのメンバーに DataMemberAttribute を適用する必要があります。

既存の型の再利用

データ コントラクトには、2 つの基本的な要件があります。

  • 安定名。

  • メンバー リスト。

安定名は、名前空間の Uniform Resource Identifier (URI) と、コントラクトのローカル名で構成されます。既定では、クラスに DataContractAttribute を適用すると、そのクラス名がローカル名として使用され、クラスの名前空間が名前空間の URI として使用されます(先頭に "http://schemas.datacontract.org/2004/07/" が付けられます)。これらの既定値は、Name プロパティと Namespace プロパティを設定することによってオーバーライドできます。また、名前空間に ContractNamespaceAttribute を適用して、名前空間を変更することもできます。目的どおりにデータが処理される既存の型があり、データ コントラクトと名前空間およびクラス名が異なる場合には、この機能を使用できます。既定値をオーバーライドすることによって、既存の型を再利用して、シリアル化したデータをデータ コントラクトに準拠させることができます。

メモメモ:

コードでは、DataContractAttribute の代わりに、DataContract という短い語を使用できます。


// Define the data contract.
[DataContract(Name = "Customer", Namespace = "http://www.contoso.com", IsReference = true)]
public class User
{
    [DataMember(Name = "Last", EmitDefaultValue = true, IsRequired = true, Order = 2)]
    public string Name { get; set; }

    [DataMember(Order = 1)]
    public int Age { get; set; }

    public User() { }

    public User(string newName, int newAge)
    {
        Name = newName;
        Age = newAge;
    }
}


Windows Phone OS

サポート: 8.0, 7.1, 7.0

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

表示:
© 2014 Microsoft