Partilhar via


CollectionDataContractAttribute Classe

Definição

Quando aplicado a um tipo de coleção, habilita a especificação personalizada dos elementos de item da coleção. Esse atributo pode ser aplicado somente aos tipos reconhecidos pelo DataContractSerializer como coleções válidas e serializáveis.

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
Herança
CollectionDataContractAttribute
Atributos

Exemplos

O exemplo a seguir aplica o CollectionDataContractAttribute a uma classe que herda da List<T> classe . O código define as Name propriedades e ItemName como valores personalizados.

[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 a ferramenta utilitário de metadados ServiceModel (Svcutil.exe) é usada para gerar código para o cliente, o código se assemelha ao exemplo a seguir. Observe que o nome da classe é alterado, bem como o ItemName. Ao usar genéricos, o nome do parâmetro de tipo é usado para criar o nome do tipo resultante.

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

Comentários

O CollectionDataContractAttribute destina-se a facilitar a interoperabilidade ao trabalhar com dados de provedores não WCF e controlar a forma exata das instâncias serializadas. Para esse fim, a ItemName propriedade permite que você controle os nomes dos itens repetidos dentro de uma coleção. Isso é especialmente útil quando o provedor não usa o nome do tipo de elemento XML como o nome do item de matriz, por exemplo, se um provedor usa "String" como um nome de tipo de elemento em vez do nome de tipo XSD "string".

O CollectionDataContractAttribute também se destina a ser usado com tipos de dicionário para lidar com coleções com chave. Tipos de dicionário são classes que implementam o IDictionary ou a IDictionary<TKey,TValue> interface , por exemplo, o Dictionary<TKey,TValue>. Use as KeyName propriedades e ValueName para definir nomes personalizados ao usar a Dictionary<TKey,TValue> classe .

Para obter mais informações sobre como usar o DataContractSerializer, consulte Usando contratos de dados.

Construtores

CollectionDataContractAttribute()

Inicializa uma nova instância da classe CollectionDataContractAttribute.

Propriedades

IsItemNameSetExplicitly

Obtém se ItemName tiver sido definido explicitamente.

IsKeyNameSetExplicitly

Obtém se KeyName tiver sido definido explicitamente.

IsNameSetExplicitly

Obtém se Name tiver sido definido explicitamente.

IsNamespaceSetExplicitly

Obtém se Namespace tiver sido definido explicitamente.

IsReference

Obtém ou define um valor que indica se deve preservar os dados de referência do objeto.

IsReferenceSetExplicitly

Informa se a referência foi definida explicitamente.

IsValueNameSetExplicitly

Obtém se ValueName tiver sido definido explicitamente.

ItemName

Obtém ou define um nome personalizado para um elemento de coleção.

KeyName

Obtém ou define o nome personalizado para um nome de chave de dicionário.

Name

Obtém ou define o nome do contrato de dados do tipo de coleção.

Namespace

Obtém ou define o namespace do contrato de dados.

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.

(Herdado de Attribute)
ValueName

Obtém ou define o nome personalizado de um nome de valor de dicionário.

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para a instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a

Confira também