1

在将参数从 xml 传递到 WCF 服务时,有什么可以用来避免在 DataMember 中使用 Order 属性

[DataMember(Name = "Name", Order = 2)]
...
[DataMember(Name = "ID", Order = 1)]
...
4

1 回答 1

2

不,如果您以与序列化程序所期望的顺序不同的顺序传递成员,则无法避免使用 Order DataMemberAttribute。

此处概述了订购规则:

http://msdn.microsoft.com/en-us/library/ms729813.aspx

数据排序的基本规则包括:

  • 如果数据协定类型是继承层次结构的一部分,则其基本类型的数据成员始终排在首位。
  • 接下来是当前类型的不具有 DataMemberAttribute 属性集的 Order 属性的数据成员,按字母顺序排列。
  • 接下来是具有 DataMemberAttribute 属性集的 Order 属性的任何数据成员。它们首先按 Order 属性的值排序,然后如果某个 Order 值有多个成员,则按字母顺序排列。订单值可能会被跳过。

如果您传递不符合这些规则的成员,那么您将获得空值,因为序列化程序将跳过它们。我知道这不是很好,但不幸的是它的工作方式。

于 2013-05-14T09:37:21.870 回答