Udostępnij za pośrednictwem


CollectionDataContractAttribute Klasa

Definicja

Po zastosowaniu do typu kolekcji włącza niestandardową specyfikację elementów elementu kolekcji. Ten atrybut można zastosować tylko do typów rozpoznawanych przez DataContractSerializer prawidłowe kolekcje z możliwością serializacji.

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
Dziedziczenie
CollectionDataContractAttribute
Atrybuty

Przykłady

Poniższy przykład dotyczy CollectionDataContractAttribute klasy dziedziczonej List<T> z klasy . Kod ustawia Name właściwości i ItemName na wartości niestandardowe.

[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

Gdy narzędzie ServiceModel Metadata Tool (Svcutil.exe) jest używane do generowania kodu dla klienta, kod przypomina poniższy przykład. Zwróć uwagę, że nazwa klasy została zmieniona, a także .ItemName W przypadku korzystania z typów ogólnych nazwa parametru typu jest używana do tworzenia wynikowej nazwy 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

Uwagi

Ma CollectionDataContractAttribute na celu ułatwienie współdziałania podczas pracy z danymi od dostawców innych niż WCF i kontrolowanie dokładnego kształtu serializowanych wystąpień. W tym celu ItemName właściwość umożliwia kontrolowanie nazw powtarzających się elementów w kolekcji. Jest to szczególnie przydatne, gdy dostawca nie używa nazwy typu elementu XML jako nazwy elementu tablicy, na przykład jeśli dostawca używa ciągu jako nazwy typu elementu zamiast nazwy typu XSD "string".

Element CollectionDataContractAttribute jest również przeznaczony do użycia z typami słowników do obsługi kolekcji kluczy. Typy słowników to klasy, które implementują IDictionary interfejs lub IDictionary<TKey,TValue> , na przykład Dictionary<TKey,TValue>. KeyName Użyj właściwości iValueName, aby ustawić nazwy niestandardowe podczas korzystania z Dictionary<TKey,TValue> klasy.

Aby uzyskać więcej informacji na temat korzystania z usługi DataContractSerializer, zobacz Using Data Contracts (Używanie kontraktów danych).

Konstruktory

CollectionDataContractAttribute()

Inicjuje nowe wystąpienie klasy CollectionDataContractAttribute.

Właściwości

IsItemNameSetExplicitly

Pobiera informację, czy ItemName została jawnie ustawiona.

IsKeyNameSetExplicitly

Pobiera informację, czy KeyName została jawnie ustawiona.

IsNameSetExplicitly

Pobiera informację, czy Name została jawnie ustawiona.

IsNamespaceSetExplicitly

Pobiera informację, czy Namespace została jawnie ustawiona.

IsReference

Pobiera lub ustawia wartość wskazującą, czy zachować dane odwołania do obiektu.

IsReferenceSetExplicitly

Pobiera informację, czy odwołanie zostało jawnie ustawione.

IsValueNameSetExplicitly

Pobiera informację, czy ValueName została jawnie ustawiona.

ItemName

Pobiera lub ustawia niestandardową nazwę elementu kolekcji.

KeyName

Pobiera lub ustawia niestandardową nazwę klucza słownika.

Name

Pobiera lub ustawia nazwę kontraktu danych dla typu kolekcji.

Namespace

Pobiera lub ustawia przestrzeń nazw dla kontraktu danych.

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu .

(Odziedziczone po Attribute)
ValueName

Pobiera lub ustawia niestandardową nazwę nazwy wartości słownika.

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsDefaultAttribute()

Podczas zastępowania w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie dla obiektu, który może służyć do pobierania informacji o typie dla interfejsu.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy

Zobacz też