CollectionDataContractAttribute CollectionDataContractAttribute CollectionDataContractAttribute CollectionDataContractAttribute Class

Definición

Cuando se aplica a un tipo de colección, habilita la especificación personalizada de los elementos de elemento de colección.When applied to a collection type, enables custom specification of the collection item elements. Este atributo sólo se puede aplicar a los tipos que son reconocidos por DataContractSerializer como colecciones válidas serializables.This attribute can be applied only to types that are recognized by the DataContractSerializer as valid, serializable collections.

public ref class CollectionDataContractAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple=false, Inherited=false)]
public sealed class CollectionDataContractAttribute : Attribute
type CollectionDataContractAttribute = class
    inherit Attribute
Public NotInheritable Class CollectionDataContractAttribute
Inherits Attribute
Herencia
CollectionDataContractAttributeCollectionDataContractAttributeCollectionDataContractAttributeCollectionDataContractAttribute
Atributos

Ejemplos

El ejemplo siguiente aplica CollectionDataContractAttribute a una clase que se hereda de la clase List<T>.The following example applies the CollectionDataContractAttribute to a class that inherits from the List<T> class. El código establece las propiedades Name y ItemName en valores personalizados.The code sets the Name and ItemName properties to custom values.

[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 es similar al ejemplo siguiente.When the ServiceModel Metadata Utility Tool (Svcutil.exe) is used to generate code for the client, the code resembles the following example. Observe que se cambia el nombre de la clase, así como ItemName.Notice that the name of the class is changed, as well as the ItemName. Al usar genéricos, se usa el nombre del parámetro de tipo para crear el nombre de tipo resultante.When using generics, the type parameter name is used to create the resulting type name.

// 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

CollectionDataContractAttribute Está diseñado para facilitar la interoperabilidad al trabajar con datos de proveedores que no son de WCF y controlar la forma exacta de las instancias serializadas.The CollectionDataContractAttribute is intended to ease interoperability when working with data from non-WCF providers and to control the exact shape of serialized instances. Con este objetivo, la propiedad ItemName le permite controlar los nombres de los elementos de repetición dentro de una colección.To this end, the ItemName property enables you to control the names of the repeating items inside a collection. 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".This is especially useful when the provider does not use the XML element type name as the array item name, for example, if a provider uses "String" as an element type name instead of the XSD type name "string".

CollectionDataContractAttribute también está diseñado para usarse con tipos de diccionario para manipular colecciones codificadas en clave.The CollectionDataContractAttribute is also intended to be used with dictionary types to handle keyed collections. Los tipos de diccionario son clases que implementan la interfaz IDictionary o IDictionary<TKey,TValue>, por ejemplo, Dictionary<TKey,TValue>.Dictionary types are classes that implement either the IDictionary or the IDictionary<TKey,TValue> interface, for example, the Dictionary<TKey,TValue>. Use las propiedades KeyName y ValueName para establecer los nombres personalizados al usar la clase Dictionary<TKey,TValue>.Use the KeyName and ValueName properties to set custom names when using the Dictionary<TKey,TValue> class.

Para obtener más información sobre el DataContractSerializeruso de, vea uso de contratos de datos.For more information about using the DataContractSerializer, see Using Data Contracts.

Constructores

CollectionDataContractAttribute() CollectionDataContractAttribute() CollectionDataContractAttribute() CollectionDataContractAttribute()

Inicializa una nueva instancia de la clase CollectionDataContractAttribute.Initializes a new instance of the CollectionDataContractAttribute class.

Propiedades

IsItemNameSetExplicitly IsItemNameSetExplicitly IsItemNameSetExplicitly IsItemNameSetExplicitly

Obtiene si ItemName se estableció explícitamente.Gets whether ItemName has been explicitly set.

IsKeyNameSetExplicitly IsKeyNameSetExplicitly IsKeyNameSetExplicitly IsKeyNameSetExplicitly

Obtiene si KeyName se estableció explícitamente.Gets whether KeyName has been explicitly set.

IsNameSetExplicitly IsNameSetExplicitly IsNameSetExplicitly IsNameSetExplicitly

Obtiene si Name se estableció explícitamente.Gets whether Name has been explicitly set.

IsNamespaceSetExplicitly IsNamespaceSetExplicitly IsNamespaceSetExplicitly IsNamespaceSetExplicitly

Obtiene si Namespace se estableció explícitamente.Gets whether Namespace has been explicitly set.

IsReference IsReference IsReference IsReference

Obtiene o establece un valor que indica si conservar los datos de referencia al objeto.Gets or sets a value that indicates whether to preserve object reference data.

IsReferenceSetExplicitly IsReferenceSetExplicitly IsReferenceSetExplicitly IsReferenceSetExplicitly

Obtiene si la referencia se estableció explícitamente.Gets whether reference has been explicitly set.

IsValueNameSetExplicitly IsValueNameSetExplicitly IsValueNameSetExplicitly IsValueNameSetExplicitly

Obtiene si ValueName se estableció explícitamente.Gets whether ValueName has been explicitly set.

ItemName ItemName ItemName ItemName

Obtiene o establece un nombre personalizado para un elemento de la colección.Gets or sets a custom name for a collection element.

KeyName KeyName KeyName KeyName

Obtiene o establece el nombre personalizado para un nombre de clave del diccionario.Gets or sets the custom name for a dictionary key name.

Name Name Name Name

Obtiene o establece el nombre del contrato de datos para el tipo de colección.Gets or sets the data contract name for the collection type.

Namespace Namespace Namespace Namespace

Obtiene o establece el espacio de nombres para el contrato de datos.Gets or sets the namespace for the data contract.

TypeId TypeId TypeId TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
ValueName ValueName ValueName ValueName

Obtiene o establece el nombre personalizado para un nombre de valor del diccionario.Gets or sets the custom name for a dictionary value name.

Métodos

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Implementaciones de interfaz explícitas

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Se aplica a

Consulte también: