CollectionDataContractAttribute Classe

Definição

Quando aplicado a um tipo de coleção, permite a especificação personalizada dos elementos do item da coleção. Este atributo pode ser aplicado apenas a tipos reconhecidos por coleções DataContractSerializer 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 seguinte aplica-se a CollectionDataContractAttribute uma classe que herda da List<T> classe. O código define as Name propriedades e ItemName para 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ária de Metadados do Modelo de Serviço (Svcutil.exe) é usada para gerar código para o cliente, o código assemelha-se ao seguinte exemplo. Note que o nome da classe foi alterado, assim como o ItemName. Ao usar genéricos, o nome do parâmetro de tipo é usado para criar o nome de 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

Observações

O CollectionDataContractAttribute objetivo é facilitar a interoperabilidade ao trabalhar com dados de fornecedores não WCF e controlar a forma exata das instâncias serializadas. Para tal, a ItemName propriedade permite-lhe controlar os nomes dos itens repetidos dentro de uma coleção. Isto é especialmente útil quando o fornecedor não utiliza o nome do tipo de elemento XML como nome do elemento do array, por exemplo, se um fornecedor usar "String" como nome do tipo de elemento em vez do nome do tipo XSD "string".

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

Para mais informações sobre a utilização do DataContractSerializer, consulte Utilização de Contratos de Dados.

Construtores

Name Description
CollectionDataContractAttribute()

Inicializa uma nova instância da CollectionDataContractAttribute classe.

Propriedades

Name Description
IsItemNameSetExplicitly

Obtém se ItemName foi explicitamente definido.

IsKeyNameSetExplicitly

Obtém se KeyName foi explicitamente definido.

IsNameSetExplicitly

Obtém se Name foi explicitamente definido.

IsNamespaceSetExplicitly

Obtém se Namespace foi explicitamente definido.

IsReference

Obtém ou define um valor que indica se os dados de referência de objeto devem ser preservados.

IsReferenceSetExplicitly

Obtém se a referência foi explicitamente definida.

IsValueNameSetExplicitly

Obtém se ValueName foi explicitamente definido.

ItemName

Recebe ou define um nome personalizado para um elemento da coleção.

KeyName

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

Name

Recebe ou define o nome do contrato de dados para o tipo de coleção.

Namespace

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

TypeId

Quando implementado numa classe derivada, obtém um identificador único para esta Attribute.

(Herdado de Attribute)
ValueName

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

Métodos

Name Description
Equals(Object)

Devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Devolve o código de hash para esta instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

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

Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

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

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

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

(Herdado de Attribute)

Aplica-se a

Ver também