有什么方法可以使 WCF 服务接受顺序不重要的请求,即您可以发送以下内容并使其正确反序列化吗:
<Request>
<Field1>Val1</Field1>
<Field2>Val2</Field2>
<Field3>Val3</Field3>
</Request>
或
<Request>
<Field3>Val3</Field3>
<Field1>Val1</Field1>
<Field2>Val2</Field2>
</Request>
或
<Request>
<Field2>Val2</Field2>
<Field3>Val3</Field3>
<Field1>Val1</Field1>
</Request>
等...
我知道数据协定序列化器的默认行为,但我可以让它完全忽略顺序吗?我需要一个不同的/定制的序列化器吗?
我似乎无法在任何地方找到明确的答案。
干杯, 比利
最佳答案
如果您使用 DataContractSerializer
,您的 xml 必须按定义的顺序排列。通过按字母顺序排列的默认值。或者通过您定义的顺序装饰您定义的成员。
如果您尝试反序列化某些 xml 而它的顺序错误,它只会在正确位置反序列化序列化程序的值。
如果您改用 XMLSerializer
,这不依赖于顺序中的 xml,并且如果它找到正确的节点将反序列化,这似乎是您想要的行为。
看看at this tutorial以 XmlSerializer 为例。
关于c# - WCF - 发送请求的能力,其中字段可以按任何顺序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8414781/