CollectionDataContractAttribute Clase

Definición

Cuando se aplica a un tipo de colección, habilita la especificación personalizada de los elementos de elemento de colección. Este atributo sólo se puede aplicar a los tipos que son reconocidos por DataContractSerializer como colecciones válidas serializables.

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
Herencia
CollectionDataContractAttribute
Atributos

Ejemplos

El ejemplo siguiente aplica CollectionDataContractAttribute a una clase que se hereda de la clase List<T>. El código establece las propiedades Name y ItemName en 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

Cuando se usa la Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe) para generar código para el cliente, el código se parece al ejemplo siguiente. Observe que se cambia el nombre de la clase, así como ItemName. Al usar genéricos, se usa el nombre del parámetro de tipo para crear el nombre 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

Comentarios

Está CollectionDataContractAttribute pensado para facilitar la interoperabilidad cuando se trabaja con datos de proveedores que no son WCF y para controlar la forma exacta de las instancias serializadas. Con este objetivo, la propiedad ItemName le permite controlar los nombres de los elementos de repetición dentro de una colección. Esto es especialmente útil cuando el proveedor no usa el nombre del tipo de elemento XML como nombre de elemento de la matriz; por ejemplo, si un proveedor usa "Cadena" como nombre del tipo de elemento en lugar del nombre de tipo XSD "cadena".

CollectionDataContractAttribute también está diseñado para usarse con tipos de diccionario para manipular colecciones codificadas en clave. Los tipos de diccionario son clases que implementan la interfaz IDictionary o IDictionary<TKey,TValue>, por ejemplo, Dictionary<TKey,TValue>. Use las propiedades KeyName y ValueName para establecer los nombres personalizados al usar la clase Dictionary<TKey,TValue>.

Para obtener más información sobre el uso de DataContractSerializer, vea Using Data Contracts( Uso de contratos de datos).

Constructores

CollectionDataContractAttribute()

Inicializa una nueva instancia de la clase CollectionDataContractAttribute.

Propiedades

IsItemNameSetExplicitly

Obtiene si ItemName se estableció explícitamente.

IsKeyNameSetExplicitly

Obtiene si KeyName se estableció explícitamente.

IsNameSetExplicitly

Obtiene si Name se estableció explícitamente.

IsNamespaceSetExplicitly

Obtiene si Namespace se estableció explícitamente.

IsReference

Obtiene o establece un valor que indica si conservar los datos de referencia al objeto.

IsReferenceSetExplicitly

Obtiene si la referencia se estableció explícitamente.

IsValueNameSetExplicitly

Obtiene si ValueName se estableció explícitamente.

ItemName

Obtiene o establece un nombre personalizado para un elemento de la colección.

KeyName

Obtiene o establece el nombre personalizado para un nombre de clave del diccionario.

Name

Obtiene o establece el nombre del contrato de datos para el tipo de colección.

Namespace

Obtiene o establece el espacio de nombres para el contrato de datos.

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)
ValueName

Obtiene o establece el nombre personalizado para un nombre de valor del diccionario.

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.

(Heredado de Attribute)
GetHashCode()

Devuelve el código hash de esta instancia.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.

(Heredado de Attribute)
Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

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

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

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

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

(Heredado de Attribute)

Se aplica a

Consulte también