Partilhar via


Pedido de Membro de Dados

Em alguns aplicativos, é útil saber a ordem na qual os dados dos vários membros de dados são enviados ou devem ser recebidos (como a ordem em que os dados aparecem no XML serializado). Por vezes, pode ser necessário alterar esta ordem. Este tópico explica as regras de ordenação.

Regras básicas

As regras básicas para a encomenda de dados incluem:

  • Se um tipo de contrato de dados fizer parte de uma hierarquia de herança, os membros de dados de seus tipos base serão sempre os primeiros na ordem.

  • Em seguida, na ordem, estão os membros de dados do tipo atual que não têm a Order propriedade do DataMemberAttribute atributo definido, em ordem alfabética.

  • Em seguida, estão todos os membros de dados que têm a Order propriedade do DataMemberAttribute atributo definido. Estes são ordenados pelo valor da Order propriedade primeiro e depois alfabeticamente se houver mais de um membro de um determinado Order valor. Os valores da encomenda podem ser ignorados.

A ordem alfabética é estabelecida chamando o CompareOrdinal método.

Exemplos

Considere o seguinte código.

[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;
}
<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

O XML produzido é semelhante ao seguinte.

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

Consulte também