IsReference
中的DataContract
属性的目的是什么?请求和响应如何随应用此属性而变化?
最佳答案
它确定对象的序列化方式,默认情况下为IsReference=false
。
设置IsReference = true
可以序列化可以互相引用的对象树。因此,通过每个Employees
列表(每个列表都有Manager
属性(也是Employee
)),可以保留对每个Manager
的Employee
的引用,而不是将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/