在将参数从 xml 传递到 WCF 服务时,有什么可以用来避免在 DataMember 中使用 Order 属性
[DataMember(Name = "Name", Order = 2)]
...
[DataMember(Name = "ID", Order = 1)]
...
在将参数从 xml 传递到 WCF 服务时,有什么可以用来避免在 DataMember 中使用 Order 属性
[DataMember(Name = "Name", Order = 2)]
...
[DataMember(Name = "ID", Order = 1)]
...
不,如果您以与序列化程序所期望的顺序不同的顺序传递成员,则无法避免使用 Order DataMemberAttribute。
此处概述了订购规则:
http://msdn.microsoft.com/en-us/library/ms729813.aspx
数据排序的基本规则包括:
- 如果数据协定类型是继承层次结构的一部分,则其基本类型的数据成员始终排在首位。
- 接下来是当前类型的不具有 DataMemberAttribute 属性集的 Order 属性的数据成员,按字母顺序排列。
- 接下来是具有 DataMemberAttribute 属性集的 Order 属性的任何数据成员。它们首先按 Order 属性的值排序,然后如果某个 Order 值有多个成员,则按字母顺序排列。订单值可能会被跳过。
如果您传递不符合这些规则的成员,那么您将获得空值,因为序列化程序将跳过它们。我知道这不是很好,但不幸的是它的工作方式。