Compartir a través de


Orden de los miembros de datos

En algunas aplicaciones, es útil conocer el orden en el que se envían los datos de los distintos miembros de datos o en el que se espera recibir (como el orden en el que los datos aparecen en el XML serializado). A veces puede ser necesario cambiar este orden. En este tema se explican las reglas de la clasificación.

Reglas básicas

Las reglas básicas sobre el orden de los datos incluyen:

  • Si un tipo de contrato de datos forma parte de una jerarquía de herencia, los miembros de datos de sus tipos base siempre aparecerán en primer lugar.

  • A continuación, se encontrarán los miembros de datos del tipo actual que no tienen la propiedad Order del conjunto de atributos DataMemberAttribute, en orden alfabético.

  • Después se encontrará cualquier miembro de datos que tenga la propiedad Order del conjunto de atributos DataMemberAttribute. Se ordenan por el valor de la propiedad Order y después alfabéticamente si hay más de un miembro de un valor Order concreto. Los valores de orden pueden omitirse.

El orden alfabético se establece llamando al método CompareOrdinal.

Ejemplos

Observe el código siguiente.

<DataContract()> _
Public Class BaseType
    <DataMember()> Public zebra As String
End Class

<DataContract()> _
Public Class DerivedType
    Inherits BaseType
    <DataMember(Order:=0)> Public bird As String
    <DataMember(Order:=1)> Public parrot As String
    <DataMember()> Public dog As String
    <DataMember(Order:=3)> Public antelope As String
    <DataMember()> Public cat As String
    <DataMember(Order:=1)> Public albatross As String
End Class
[DataContract]
public class BaseType
{

    [DataMember]
    public string zebra;
}
[DataContract]
public class DerivedType : BaseType
{
    [DataMember(Order = 0)]
    public string bird;
    [DataMember(Order = 1)]
    public string parrot;
    [DataMember]
    public string dog;
    [DataMember(Order = 3)]
    public string antelope;
    [DataMember]
    public string cat;
    [DataMember(Order = 1)]
    public string albatross;
}

El XML generado es similar a lo siguiente.

<DerivedType>
    <!-- Zebra is a base data member, and appears first. -->
    <zebra/> 

    <!-- Cat has no Order, appears alphabetically first. -->
    <cat/>
    
   <!-- Dog has no Order, appears alphabetically last. -->
    <dog/> 

    <!-- Bird is the member with the smallest Order value -->
    <bird/>

    <!-- Albatross has the next Order value, alphabetically first. -->
    <albatross/>

    <!-- Parrot, with the next Order value, alphabetically last. -->
     <parrot/>

    <!-- Antelope is the member with the highest Order value. Note that 
    Order=2 is skipped -->
     <antelope/> 
</DerivedType>

Vea también

Referencia

DataContractAttribute

Conceptos

Equivalencia del contrato de datos
Utilización de contratos de datos