CollectionDataContractAttribute Třída

Definice

Při použití na typ kolekce povolí vlastní specifikaci prvků položky kolekce. Tento atribut lze použít pouze pro typy, které jsou rozpoznány DataContractSerializer jako platné serializovatelné kolekce.

public ref class CollectionDataContractAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple=false, Inherited=false)]
public sealed class CollectionDataContractAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple=false, Inherited=false)>]
type CollectionDataContractAttribute = class
    inherit Attribute
Public NotInheritable Class CollectionDataContractAttribute
Inherits Attribute
Dědičnost
CollectionDataContractAttribute
Atributy

Příklady

Následující příklad použije CollectionDataContractAttribute na třídu, která dědí z třídy List<T> . Kód nastaví Name vlastnosti a ItemName na vlastní hodnoty.

[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

Když serviceModel Metadata Utility Tool (Svcutil.exe) se používá ke generování kódu pro klienta, kód se podobá následujícímu příkladu. Všimněte si, že se změnil název třídy a také .ItemName Při použití obecných typů se název parametru typu použije k vytvoření výsledného názvu typu.

// 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

Poznámky

Účelem CollectionDataContractAttribute je usnadnit interoperabilitu při práci s daty od jiných poskytovatelů než WCF a řídit přesný tvar serializovaných instancí. Za tímto účelem ItemName umožňuje vlastnost řídit názvy opakujících se položek v kolekci. To je zvlášť užitečné, pokud zprostředkovatel nepoužívá název typu elementu XML jako název položky pole, například pokud zprostředkovatel používá "Řetězec" jako název typu elementu místo názvu typu XSD "řetězec".

Je CollectionDataContractAttribute také určen pro použití se slovníkovými typy pro zpracování kolekcí s klíči. Typy slovníků jsou třídy, které implementují rozhraní IDictionary nebo IDictionary<TKey,TValue> , například Dictionary<TKey,TValue>. KeyName Při použití Dictionary<TKey,TValue> třídy použijte vlastnosti a ValueName k nastavení vlastních názvů.

Další informace o použití najdete v DataContractSerializertématu Použití kontraktů dat.

Konstruktory

CollectionDataContractAttribute()

Inicializuje novou instanci CollectionDataContractAttribute třídy .

Vlastnosti

IsItemNameSetExplicitly

Získá, zda ItemName byl explicitně nastaven.

IsKeyNameSetExplicitly

Získá, zda KeyName byl explicitně nastaven.

IsNameSetExplicitly

Získá, zda Name byl explicitně nastaven.

IsNamespaceSetExplicitly

Získá, zda Namespace byl explicitně nastaven.

IsReference

Získá nebo nastaví hodnotu, která označuje, zda chcete zachovat referenční data objektu.

IsReferenceSetExplicitly

Získá, zda odkaz byl explicitně nastaven.

IsValueNameSetExplicitly

Získá, zda ValueName byl explicitně nastaven.

ItemName

Získá nebo nastaví vlastní název pro prvek kolekce.

KeyName

Získá nebo nastaví vlastní název pro název klíče slovníku.

Name

Získá nebo nastaví název kontraktu dat pro typ kolekce.

Namespace

Získá nebo nastaví obor názvů pro kontrakt dat.

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu .

(Zděděno od Attribute)
ValueName

Získá nebo nastaví vlastní název pro název hodnoty slovníku.

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, které lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro

Viz také