Condividi tramite


CollectionDataContractAttribute Classe

Definizione

Quando viene applicato a un tipo di raccolta, consente la specifica personalizzata degli elementi della raccolta. Questo attributo può essere applicato soltanto ai tipi che sono riconosciuti come raccolte serializzabili valide dalla classe DataContractSerializer.

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
Ereditarietà
CollectionDataContractAttribute
Attributi

Esempio

Nell'esempio seguente viene applicato l'attributo CollectionDataContractAttribute a una classe che eredita dalla classe List<T>. Il codice imposta le proprietà Name e ItemName su valori personalizzati.

[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

Quando lo strumento utilità metadati ServiceModel (Svcutil.exe) viene usato per generare codice per il client, il codice è simile all'esempio seguente. Il nome della classe risulta modificato, così come ItemName. Quando si utilizzano generics, il nome del parametro di tipo viene utilizzato per creare il nome del tipo risultante.

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

Commenti

l'oggetto CollectionDataContractAttribute è progettato per semplificare l'interoperabilità quando si utilizzano dati da provider non WCF e per controllare la forma esatta delle istanze serializzate. A tal fine, la proprietà ItemName consente di controllare i nomi degli elementi ripetuti all'interno di una raccolta. Ciò risulta particolarmente utile quando il provider non utilizza il nome del tipo di elemento XML come nome di un elemento della matrice. È ad esempio possibile che un provider utilizzi "String" come nome del tipo di elemento anziché il nome del tipo XSD "string".

La classe CollectionDataContractAttribute può essere inoltre utilizzata con tipi di dizionario per gestire raccolte con chiave. I tipi di dizionario sono classi che implementano l'interfaccia IDictionary o IDictionary<TKey,TValue>, ad esempio Dictionary<TKey,TValue>. Utilizzare le proprietà KeyName e ValueName per impostare nomi personalizzati quando si utilizza la classe Dictionary<TKey,TValue>.

Per altre informazioni sull'uso di DataContractSerializer, vedere Uso dei contratti dati.

Costruttori

CollectionDataContractAttribute()

Inizializza una nuova istanza della classe CollectionDataContractAttribute.

Proprietà

IsItemNameSetExplicitly

Ottiene un valore che indica se ItemName è stato impostato in modo esplicito.

IsKeyNameSetExplicitly

Ottiene un valore che indica se KeyName è stato impostato in modo esplicito.

IsNameSetExplicitly

Ottiene un valore che indica se Name è stato impostato in modo esplicito.

IsNamespaceSetExplicitly

Ottiene un valore che indica se Namespace è stato impostato in modo esplicito.

IsReference

Ottiene o imposta un valore che indica se mantenere i dati del riferimento all'oggetto.

IsReferenceSetExplicitly

Ottiene un valore che indica se il riferimento è stato impostato in modo esplicito.

IsValueNameSetExplicitly

Ottiene un valore che indica se ValueName è stato impostato in modo esplicito.

ItemName

Ottiene o imposta un nome personalizzato per un elemento di raccolta.

KeyName

Ottiene o imposta il nome personalizzato per un nome della chiave del dizionario.

Name

Ottiene o imposta il nome del contratto dati per il tipo di raccolta.

Namespace

Ottiene o imposta lo spazio dei nomi per il contratto dati.

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)
ValueName

Ottiene o imposta il nome personalizzato per il nome di un valore del dizionario.

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

(Ereditato da Attribute)

Si applica a

Vedi anche