Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В некоторых приложениях важно знать порядок, в котором данные из различных элементов отправляются или ожидается их получение (например, порядок, в котором данные представлены в сериализованном XML). Иногда может потребоваться изменить этот порядок. В этом разделе описываются правила упорядочения.
Основные правила
Ниже указаны основные правила упорядочивания данных:
Если тип контракта данных является частью иерархии наследования, элементы данных его базовых типов всегда следуют первыми в заданном порядке.
Далее упорядочены элементы данных текущего типа, которые не имеют Order свойства набора атрибутов DataMemberAttribute в алфавитном порядке.
Далее — все члены данных, имеющие Order свойство набора атрибутов DataMemberAttribute . Они упорядочены по значению
Orderсвойства сначала, а затем в алфавитном порядке, если имеется несколько элементов определенногоOrderзначения. Значения последовательности могут быть пропущены.
Алфавитный порядок устанавливается путем вызова CompareOrdinal метода.
Примеры
Рассмотрим следующий код.
[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
Созданный XML-код аналогичен следующему.
<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>