CollectionDataContractAttribute Classe

Définition

En cas d'application à un type collection, active la spécification personnalisée des éléments item de la collection. Cet attribut peut uniquement être appliqué aux types qui sont reconnus comme étant des collections valides et sérialisables par le 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
Héritage
CollectionDataContractAttribute
Attributs

Exemples

L'exemple suivant applique le CollectionDataContractAttribute à une classe qui hérite de la classe List<T>. Le code affecte des valeurs personnalisées aux propriétés Name et ItemName.

[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 ServiceModel Metadata Utility Tool (Svcutil.exe) est utilisé pour générer du code pour le client, le code ressemble à l’exemple suivant. Remarquez que le nom de la classe est modifié, tout comme la ItemName. Lors de l’utilisation de génériques, le nom de 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

Le CollectionDataContractAttribute est destiné à faciliter l’interopérabilité lors de l’utilisation de données provenant de fournisseurs non WCF et à contrôler la forme exacte des instances sérialisées. À cette fin, la propriété ItemName vous permet de contrôler les noms des éléments à répétition à l’intérieur d’une collection. Cette technique est particulièrement utile lorsque le fournisseur n'utilise pas le nom du 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 à la place du nom de type XSD « string ».

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

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

Constructeurs

CollectionDataContractAttribute()

Initialise une nouvelle instance de la classe CollectionDataContractAttribute.

Propriétés

IsItemNameSetExplicitly

Obtient l’information indiquant si ItemName a été défini explicitement.

IsKeyNameSetExplicitly

Obtient l’information indiquant si KeyName a été défini explicitement.

IsNameSetExplicitly

Obtient l’information indiquant si Name a été défini explicitement.

IsNamespaceSetExplicitly

Obtient l’information indiquant si Namespace a été défini 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 l’information indiquant si la référence a été définie explicitement.

IsValueNameSetExplicitly

Obtient l’information indiquant si ValueName a été défini explicitement.

ItemName

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

KeyName

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

Name

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

Namespace

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

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)
ValueName

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

Méthodes

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 de cette instance.

(Hérité de Attribute)
GetType()

Obtient le 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 pour la classe dérivée.

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

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

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

(Hérité de Object)

Implémentations d’interfaces explicites

_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 pour 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 aux méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Voir aussi