在非.NET客户端和.NET WCF服务之间传递序列化对象时,我经常遇到问题。
WCF反序列化对象时,它严格取决于属性的顺序。
也就是说,如果我将类定义为:
public class Foo
{
public int ID { get; set; }
public int Bar { get; set; }
}
然后WCF将对象序列化为:
<Foo>
<Bar>123</Bar>
<ID>456</ID>
</Foo>
注意:这些属性按字母顺序进行序列化。
如果您尝试反序列化
Bar
和ID
位置互换的对象,则WCF将错误定位的元素视为null。虽然我知道我可以使用
DataMember
属性并强制执行特定的排序,但我想减少调试字段为“神秘” null的问题的次数。因此,我的问题是:在反序列化对象时,您能否告诉WCF反序列化器忽略字段的顺序。
最佳答案
这里有一个旧线程:
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/a891928b-d27a-4ef2-83b3-ee407c6b9187
看起来唯一的选择是交换序列化程序,但随后变得更加烦人。
编辑:,您可以编写自己的序列化器以对元素进行重新排序,然后将其传递给DataContractSerializer
。
关于.net - WCF禁用反序列化顺序敏感性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1727682/