IsReference中的DataContract属性的目的是什么?请求和响应如何随应用此属性而变化?

最佳答案

它确定对象的序列化方式,默认情况下为IsReference=false

设置IsReference = true可以序列化可以互相引用的对象树。因此,通过每个Employees列表(每个列表都有Manager属性(也是Employee)),可以保留对每个ManagerEmployee的引用,而不是将Manager嵌入每个Employee节点中:
IsReference=false将产生:

<Employee>
      <Manager i:nil=“true“ />
      <Name>Kenny</Name>
</Employee>
<Employee>
      <Manager>
            <Manager i:nil=“true“ />
            <Name>Kenny</Name>
      </Manager>
      <Name>Bob</Name>
</Employee>
<Employee>
      <Manager>
            <Manager i:nil=“true“ />
            <Name>Kenny</Name>
      </Manager>
      <Name>Alice</Name>
</Employee>

IsReference=true将产生的位置:
<Employee z:Id=“i1“ xmlns:z=“http://schemas.microsoft.com/2003/10/Serialization/“>
      <Manager i:nil=“true“ />
      <Name>Kenny</Name>
</Employee>
<Employee z:Id=“i2“ xmlns:z=“http://schemas.microsoft.com/2003/10/Serialization/“>
      <Manager z:Ref=“i1“ />
      <Name>Bob</Name>
</Employee>
<Employee z:Id=“i3“ xmlns:z=“http://schemas.microsoft.com/2003/10/Serialization/“>
      <Manager z:Ref=“i1“ />
      <Name>Alice</Name>
</Employee>

摘自该weblog的代码片段,其中有完整的解释,以及带有所应用属性的生成XML的示例。

MSDN-IsReference Property提供了详细信息以及Interoperable Object References

关于wcf - 数据协定中的IsReference属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1037201/

10-12 01:17