CollectionDataContractAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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) |