CollectionDataContractAttribute Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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) |