CollectionDataContractAttribute Classe

Definizione

Quando viene applicato a un tipo di raccolta, consente la specifica personalizzata degli elementi della raccolta.When applied to a collection type, enables custom specification of the collection item elements. Questo attributo può essere applicato soltanto ai tipi che sono riconosciuti come raccolte serializzabili valide dalla classe 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
type CollectionDataContractAttribute = class
    inherit Attribute
Public NotInheritable Class CollectionDataContractAttribute
Inherits Attribute
Ereditarietà
CollectionDataContractAttribute
Attributi

Esempi

Nell'esempio seguente viene applicato l'attributo CollectionDataContractAttribute a una classe che eredita dalla classe List<T>.The following example applies the CollectionDataContractAttribute to a class that inherits from the List<T> class. Il codice imposta le proprietà Name e ItemName su valori personalizzati.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

Quando si utilizza lo strumento ServiceModel Metadata Utility Tool (Svcutil. exe) per generare il codice per il client, il codice è simile all'esempio seguente.When the ServiceModel Metadata Utility Tool (Svcutil.exe) is used to generate code for the client, the code resembles the following example. Il nome della classe risulta modificato, così come ItemName.Notice that the name of the class is changed, as well as the ItemName. Quando si utilizzano generics, il nome del parametro di tipo viene utilizzato per creare il nome del tipo risultante.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

Commenti

Il CollectionDataContractAttribute è progettato per semplificare l'interoperabilità quando si utilizzano dati da provider non WCF e per controllare la forma esatta delle istanze serializzate.The CollectionDataContractAttribute is intended to ease interoperability when working with data from non-WCF providers and to control the exact shape of serialized instances. A tal fine, la proprietà ItemName consente di controllare i nomi degli elementi ripetuti all'interno di una raccolta.To this end, the ItemName property enables you to control the names of the repeating items inside a collection. 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".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".

La classe CollectionDataContractAttribute può essere inoltre utilizzata con tipi di dizionario per gestire raccolte con chiave.The CollectionDataContractAttribute is also intended to be used with dictionary types to handle keyed collections. I tipi di dizionario sono classi che implementano l'interfaccia IDictionary o IDictionary<TKey,TValue>, ad esempio Dictionary<TKey,TValue>.Dictionary types are classes that implement either the IDictionary or the IDictionary<TKey,TValue> interface, for example, the Dictionary<TKey,TValue>. Utilizzare le proprietà KeyName e ValueName per impostare nomi personalizzati quando si utilizza la classe Dictionary<TKey,TValue>.Use the KeyName and ValueName properties to set custom names when using the Dictionary<TKey,TValue> class.

Per ulteriori informazioni sull'utilizzo DataContractSerializerdi, vedere utilizzo di contratti dati.For more information about using the DataContractSerializer, see Using Data Contracts.

Costruttori

CollectionDataContractAttribute()

Inizializza una nuova istanza della classe CollectionDataContractAttribute.Initializes a new instance of the CollectionDataContractAttribute class.

Proprietà

IsItemNameSetExplicitly

Ottiene un valore che indica se ItemName è stato impostato in modo esplicito.Gets whether ItemName has been explicitly set.

IsKeyNameSetExplicitly

Ottiene un valore che indica se KeyName è stato impostato in modo esplicito.Gets whether KeyName has been explicitly set.

IsNameSetExplicitly

Ottiene un valore che indica se Name è stato impostato in modo esplicito.Gets whether Name has been explicitly set.

IsNamespaceSetExplicitly

Ottiene un valore che indica se Namespace è stato impostato in modo esplicito.Gets whether Namespace has been explicitly set.

IsReference

Ottiene o imposta un valore che indica se mantenere i dati del riferimento all'oggetto.Gets or sets a value that indicates whether to preserve object reference data.

IsReferenceSetExplicitly

Ottiene un valore che indica se il riferimento è stato impostato in modo esplicito.Gets whether reference has been explicitly set.

IsValueNameSetExplicitly

Ottiene un valore che indica se ValueName è stato impostato in modo esplicito.Gets whether ValueName has been explicitly set.

ItemName

Ottiene o imposta un nome personalizzato per un elemento di raccolta.Gets or sets a custom name for a collection element.

KeyName

Ottiene o imposta il nome personalizzato per un nome della chiave del dizionario.Gets or sets the custom name for a dictionary key name.

Name

Ottiene o imposta il nome del contratto dati per il tipo di raccolta.Gets or sets the data contract name for the collection type.

Namespace

Ottiene o imposta lo spazio dei nomi per il contratto dati.Gets or sets the namespace for the data contract.

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Ereditato da Attribute)
ValueName

Ottiene o imposta il nome personalizzato per il nome di un valore del dizionario.Gets or sets the custom name for a dictionary value name.

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.Returns a value that indicates whether this instance is equal to a specified object.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(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.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(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.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(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.Maps a set of names to a corresponding set of dispatch identifiers.

(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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).Retrieves the number of type information interfaces that an object provides (either 0 or 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.Provides access to properties and methods exposed by an object.

(Ereditato da Attribute)

Si applica a

Vedi anche