Freigeben über


Datenmember-Reihenfolge

In einigen Anwendungen ist es hilfreich, die Reihenfolge zu kennen, in der Daten aus den verschiedenen Datenmbern gesendet oder erwartet werden, dass sie empfangen werden (z. B. die Reihenfolge, in der Daten im serialisierten XML angezeigt werden). Manchmal kann es notwendig sein, diese Reihenfolge zu ändern. In diesem Thema werden die Sortierregeln erläutert.

Grundregeln

Zu den grundlegenden Regeln für die Datenbestellung gehören:

  • Wenn ein Datenvertragstyp Teil einer Vererbungshierarchie ist, sind Datenmember seiner Basistypen immer zuerst in der Reihenfolge.

  • Danach folgen die Datenmember des aktuellen Typs, für die die Order-Eigenschaft des Attributs DataMemberAttribute nicht festgelegt ist, in alphabetischer Reihenfolge.

  • Dann folgen die Datenmember mit der Order-Eigenschaft der DataMemberAttributeAttributgruppe. Diese werden zuerst nach dem Wert der Order Eigenschaft sortiert, und dann alphabetisch, wenn mehr als ein Element eines bestimmten Order Werts vorhanden ist. Die Reihenfolgenwerte können übersprungen werden.

Die alphabetische Reihenfolge wird durch Aufrufen der CompareOrdinal Methode festgelegt.

Beispiele

Beachten Sie den folgenden Code.

[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

Der erzeugte XML-Code ähnelt der folgenden.

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

Siehe auch