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