CollectionDataContractAttribute クラス

定義

コレクション型に適用すると、コレクション項目要素をカスタム指定できます。When applied to a collection type, enables custom specification of the collection item elements. この属性は、DataContractSerializer が有効なシリアル化可能コレクションとして認識する型に対してのみ適用できます。This attribute can be applied only to types that are recognized by the DataContractSerializer as valid, serializable collections.

public ref class CollectionDataContractAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple=false, Inherited=false)]
public sealed class CollectionDataContractAttribute : Attribute
public sealed class CollectionDataContractAttribute : Attribute
type CollectionDataContractAttribute = class
    inherit Attribute
Public NotInheritable Class CollectionDataContractAttribute
Inherits Attribute
継承
CollectionDataContractAttribute
属性

CollectionDataContractAttribute クラスから継承するクラスに対して List<T> を適用する例を次に示します。The following example applies the CollectionDataContractAttribute to a class that inherits from the List<T> class. このコードは、Name プロパティと ItemName プロパティをカスタム値に設定します。The code sets the Name and ItemName properties to custom values.

[CollectionDataContract(Name = "Custom{0}List", ItemName = "CustomItem")]
public class CustomList<T> : List<T>
{
    public CustomList()
        : base()
    {
    }

    public CustomList(T[] items)
        : base()
    {
        foreach (T item in items)
        {
            Add(item);
        }
    }
}
<CollectionDataContract(Name := "Custom{0}List", ItemName := "CustomItem")> _
Public Class CustomList(Of T)
    Inherits List(Of T)
    Public Sub New()
        MyBase.New()
    End Sub

    Public Sub New(ByVal items() As T)
        MyBase.New()
        For Each item As T In items
            Add(item)
        Next item
    End Sub
End Class

ServiceModel メタデータユーティリティツール (svcutil.exe)を使用してクライアントのコードを生成すると、コードは次の例のようになります。When the ServiceModel Metadata Utility Tool (Svcutil.exe) is used to generate code for the client, the code resembles the following example. クラスの名前と ItemName が違うことに注意してください。Notice that the name of the class is changed, as well as the ItemName. ジェネリックを使用する場合は、型パラメーター名を使用して、結果の型名が作成されます。When using generics, the type parameter name is used to create the resulting type name.

// This is the generated code. Note that the class is renamed to "CustomBookList", 
// and the ItemName is set to "CustomItem".
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.CollectionDataContractAttribute(ItemName = "CustomItem")]
public class CustomBookList : System.Collections.Generic.List<Microsoft.Security.Samples.Book>
{
}
' This is the generated code. Note that the class is renamed to "CustomBookList", 
' and the ItemName is set to "CustomItem".
<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0"), System.Runtime.Serialization.CollectionDataContractAttribute(ItemName := "CustomItem")> _
Public Class CustomBookList
    Inherits System.Collections.Generic.List(Of Microsoft.Security.Samples.Book)
End Class

注釈

CollectionDataContractAttribute は、WCF 以外のプロバイダーからのデータを操作する場合や、シリアル化されたインスタンスの正確な構造を制御する場合に、相互運用性を容易にすることを目的としています。The CollectionDataContractAttribute is intended to ease interoperability when working with data from non-WCF providers and to control the exact shape of serialized instances. この目的を達成するために、ItemName プロパティを使用して、コレクション内で繰り返される項目の名前を制御できます。To this end, the ItemName property enables you to control the names of the repeating items inside a collection. これは、プロバイダーが XML 要素型名を配列項目名として使用していない場合 (プロバイダーが XSD 型名 "string" の代わりに要素型名として "String" を使用している場合など) に特に役に立ちます。This is especially useful when the provider does not use the XML element type name as the array item name, for example, if a provider uses "String" as an element type name instead of the XSD type name "string".

CollectionDataContractAttribute には、ディクショナリ型と共に使用して、キー付きのコレクションを処理するという目的もあります。The CollectionDataContractAttribute is also intended to be used with dictionary types to handle keyed collections. ディクショナリ型は、IDictionary インターフェイスまたは IDictionary<TKey,TValue> インターフェイスのいずれか (例 : Dictionary<TKey,TValue>) を実装するクラスです。Dictionary types are classes that implement either the IDictionary or the IDictionary<TKey,TValue> interface, for example, the Dictionary<TKey,TValue>. KeyName プロパティと ValueName プロパティを使用して、Dictionary<TKey,TValue> クラスを使用するときのカスタム名を設定します。Use the KeyName and ValueName properties to set custom names when using the Dictionary<TKey,TValue> class.

DataContractSerializerの使用方法の詳細については、「データコントラクトの使用」を参照してください。For more information about using the DataContractSerializer, see Using Data Contracts.

コンストラクター

CollectionDataContractAttribute()

CollectionDataContractAttribute クラスの新しいインスタンスを初期化します。Initializes a new instance of the CollectionDataContractAttribute class.

プロパティ

IsItemNameSetExplicitly

ItemName が明示的に設定されているかどうかを取得します。Gets whether ItemName has been explicitly set.

IsKeyNameSetExplicitly

KeyName が明示的に設定されているかどうかを取得します。Gets whether KeyName has been explicitly set.

IsNameSetExplicitly

Name が明示的に設定されているかどうかを取得します。Gets whether Name has been explicitly set.

IsNamespaceSetExplicitly

Namespace が明示的に設定されているかどうかを取得します。Gets whether Namespace has been explicitly set.

IsReference

オブジェクト参照データを保持するかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether to preserve object reference data.

IsReferenceSetExplicitly

参照が明示的に設定されているかどうかを取得します。Gets whether reference has been explicitly set.

IsValueNameSetExplicitly

ValueName が明示的に設定されているかどうかを取得します。Gets whether ValueName has been explicitly set.

ItemName

コレクション要素のカスタム名を取得または設定します。Gets or sets a custom name for a collection element.

KeyName

ディクショナリ キー名のカスタム名を取得または設定します。Gets or sets the custom name for a dictionary key name.

Name

コレクション型のデータ コントラクト名を取得または設定します。Gets or sets the data contract name for the collection type.

Namespace

データ コントラクトの名前空間を取得または設定します。Gets or sets the namespace for the data contract.

TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(継承元 Attribute)
ValueName

ディクショナリ値名のカスタム名を取得または設定します。Gets or sets the custom name for a dictionary value name.

メソッド

Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。Returns a value that indicates whether this instance is equal to a specified object.

(継承元 Attribute)
GetHashCode()

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

(継承元 Attribute)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(継承元 Attribute)
Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(継承元 Attribute)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)

明示的なインターフェイスの実装

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(継承元 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(継承元 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(継承元 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(継承元 Attribute)

適用対象

こちらもご覧ください