WCF中IsWrapped属性的用途是什么

Ome*_*r K 1 c# wcf serialization xml-serialization

WCF中"IsWrapped"属性的用途是什么.我应该在哪种情况下使用这个属性?为什么?

Cod*_*ter 6

未打包的消息(MSDN):

默认情况下,对邮件正文进行格式化,以便包装服务操作的参数.

MessageContractAttribute.IsWrapped属性(MSDN):

将IsWrapped的值设置为false以禁止将消息体序列化到的包装器元素.

所以,考虑这个(修剪过的)消息:

<s:Envelope>
  <s:Body>
    <Add>
      <n1>100</n1>
      <n2>15.99</n2>
    </Add>
  </s:Body>
</s:Envelope>
Run Code Online (Sandbox Code Playgroud)

设置IsWrapped为时false,邮件正文将不会包含在具有操作名称的元素中(Add在本例中):

<s:Envelope>
  <s:Body>
    <n1>100</n1>
    <n2>15.99</n2>
  </s:Body>
</s:Envelope>
Run Code Online (Sandbox Code Playgroud)

这些属性用于互操作性,例如在编写客户端以使用期望消息被包装的服务时.