WCF - 能够以任何顺序发送字段的请求

时间:2011-12-07 11:46:28

标签: 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> 
等等......

我知道数据合同序列化程序的默认行为但是我可以让它完全忽略该命令吗?我需要一个不同的/自定义序列化器吗?

我似乎无法在任何地方找到明确的答案。

干杯, 比利

2 个答案:

答案 0 :(得分:3)

如果您使用DataContractSerializer您的xml必须按照定义的顺序。通过默认的字母顺序。或者通过订单来定义装饰您的定义的成员。

如果您尝试反序列化某些xml并且顺序错误,则只会在正确的位置反序列化序列化程序的值。

如果您使用XMLSerializer,则不依赖于xml在一个顺序中,并且如果找到正确的节点,则会反序列化,这是您似乎想要的行为。

以XmlSerializer为例看看at this tutorial

答案 1 :(得分:1)

如果您要发送XML,那么您应该能够使用XML序列化/反序列化来为您执行工作并创建一个Request类对象。