Condividi tramite


Ordine dei membri dati

In alcune applicazioni è utile conoscere l'ordine in cui i dati dei vari membri dati vengono inviati o che devono essere ricevuti (ad esempio l'ordine in cui i dati vengono visualizzati nel codice XML serializzato). A volte potrebbe essere necessario modificare questo ordine. In questo argomento vengono illustrate le regole di ordinamento.

Regole di base

Le regole di base per l'ordinamento dei dati includono:

  • Se un tipo di contratto dati fa parte di una gerarchia di ereditarietà, i membri dati dei relativi tipi di base sono sempre primi nell'ordine.

  • L'ordine successivo è costituito dai membri dati del tipo corrente che non dispongono della Order proprietà del set di DataMemberAttribute attributi, in ordine alfabetico.

  • Di seguito sono riportati tutti i membri dati che dispongono della Order proprietà del set di DataMemberAttribute attributi. Questi vengono ordinati in base al valore della Order proprietà e quindi alfabeticamente se è presente più di un membro di un determinato Order valore. I valori dell'ordine possono essere ignorati.

L'ordine alfabetico viene stabilito chiamando il CompareOrdinal metodo .

Esempi

Si consideri il codice seguente.

[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

Il codice XML prodotto è simile al seguente.

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

Vedere anche