CollectionDataContractAttribute Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
- 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) |