c# - WCF - 发送请求的能力,其中字段可以按任何顺序排列

标签 c# wcf

有什么方法可以使 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/

相关文章:

c# - mscorwks中的非托管内存泄漏帮助分析

c# - 参数索引器的实际使用

c# - 添加对 Web 服务的引用

c# - 为每个 session 创建虚拟队列 C#

c# - 引用的 WCF 服务不使用 app.config

wcf - 为工作流服务提供工作流扩展 - WF 4.0

c# - 如何获取 Visual Studio 命令列表?

c# - 如何从具有多对多关系的 C# Web API Visual Studio 2017 RTM 服务(GET)复杂(嵌套)JSON?

c# - 代表颜色

wcf - 在 WCF 中,超时是否会使 channel 出错?