Partilhar via


CollectionDataContractAttribute Classe

Definição

Quando aplicado a um tipo de coleção, habilita a especificação personalizada dos elementos do item de coleção. Esse atributo só pode ser aplicado a tipos reconhecidos pela DataContractSerializer como coleções serializáveis válidas.

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-se a CollectionDataContractAttribute uma classe que herda da List<T> classe. O código define as propriedades e ItemName as Name propriedades 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 de Utilitário de Metadados do 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 foi 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 objetivo é facilitar a interoperabilidade ao trabalhar com dados de provedores não WCF e controlar a forma exata de 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 do tipo XSD "string".

O CollectionDataContractAttribute também destina-se a ser usado com tipos de dicionário para lidar com coleções chaveadas. Os tipos de dicionário são classes que implementam a interface ou a IDictionaryIDictionary<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 obter mais informações sobre como usar os DataContractSerializercontratos de dados, consulte Como usar contratos de dados.

Construtores

Nome Description
CollectionDataContractAttribute()

Inicializa uma nova instância da classe CollectionDataContractAttribute.

Propriedades

Nome Description
IsItemNameSetExplicitly

Obtém se ItemName foi definido explicitamente.

IsKeyNameSetExplicitly

Obtém se KeyName foi definido explicitamente.

IsNameSetExplicitly

Obtém se Name foi definido explicitamente.

IsNamespaceSetExplicitly

Obtém se Namespace foi definido explicitamente.

IsReference

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

IsReferenceSetExplicitly

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

IsValueNameSetExplicitly

Obtém se ValueName foi definido explicitamente.

ItemName

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

KeyName

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

Name

Obtém ou define o nome do contrato de dados para o 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 esse Attribute.

(Herdado de Attribute)
ValueName

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

Métodos

Nome Description
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 dessa 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 Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
_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 de um objeto, que podem ser usadas para obter as informações de tipo de 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