Partager via


CollectionDataContractAttribute Classe

Définition

Lorsqu’elle est appliquée à un type de collection, active la spécification personnalisée des éléments d’élément de collection. Cet attribut ne peut être appliqué qu’aux types reconnus par les DataContractSerializer comme des collections sérialisables valides.

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
Héritage
CollectionDataContractAttribute
Attributs

Exemples

L’exemple suivant applique la CollectionDataContractAttribute classe qui hérite de la List<T> classe. Le code définit les Name valeurs personnalisées et ItemName les propriétés.

[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

Lorsque l’outil utilitaire de métadonnées ServiceModel (Svcutil.exe) est utilisé pour générer du code pour le client, le code ressemble à l’exemple suivant. Notez que le nom de la classe est modifié, ainsi que le ItemName. Lorsque vous utilisez des génériques, le nom du paramètre de type est utilisé pour créer le nom de type résultant.

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

Remarques

L’objectif CollectionDataContractAttribute est de faciliter l’interopérabilité lors de l’utilisation de données provenant de fournisseurs non WCF et de contrôler la forme exacte des instances sérialisées. À cette fin, la ItemName propriété vous permet de contrôler les noms des éléments répétitifs à l’intérieur d’une collection. Cela est particulièrement utile lorsque le fournisseur n’utilise pas le nom de type d’élément XML comme nom d’élément de tableau, par exemple si un fournisseur utilise « String » comme nom de type d’élément au lieu du nom de type XSD « string ».

Il CollectionDataContractAttribute est également destiné à être utilisé avec des types de dictionnaire pour gérer les collections à clés. Les types de dictionnaire sont des classes qui implémentent l’interface ou l’interface IDictionaryIDictionary<TKey,TValue> , par exemple le Dictionary<TKey,TValue>. Utilisez les propriétés et ValueName les KeyName propriétés pour définir des noms personnalisés lors de l’utilisation de la Dictionary<TKey,TValue> classe.

Pour plus d’informations sur l’utilisation de l’objet DataContractSerializer, consultez Utilisation des contrats de données.

Constructeurs

Nom Description
CollectionDataContractAttribute()

Initialise une nouvelle instance de la classe CollectionDataContractAttribute.

Propriétés

Nom Description
IsItemNameSetExplicitly

Obtient si ItemName elle a été définie explicitement.

IsKeyNameSetExplicitly

Obtient si KeyName elle a été définie explicitement.

IsNameSetExplicitly

Obtient si Name elle a été définie explicitement.

IsNamespaceSetExplicitly

Obtient si Namespace elle a été définie explicitement.

IsReference

Obtient ou définit une valeur qui indique s'il faut conserver les données de référence d'objet.

IsReferenceSetExplicitly

Obtient si la référence a été définie explicitement.

IsValueNameSetExplicitly

Obtient si ValueName elle a été définie explicitement.

ItemName

Obtient ou définit un nom personnalisé pour un élément de collection.

KeyName

Obtient ou définit le nom personnalisé d’un nom de clé de dictionnaire.

Name

Obtient ou définit le nom du contrat de données pour le type de collection.

Namespace

Obtient ou définit l’espace de noms pour le contrat de données.

TypeId

En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute.

(Hérité de Attribute)
ValueName

Obtient ou définit le nom personnalisé d’un nom de valeur de dictionnaire.

Méthodes

Nom Description
Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage pour cette instance.

(Hérité de Attribute)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut de la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type d’un objet, qui peuvent être utilisées pour obtenir les informations de type d’une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l’accès aux propriétés et méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Voir aussi