IsReference
财产的目的是什么DataContract
?请求和响应如何随此属性的应用而变化?
问问题
23807 次
2 回答
65
它确定对象的序列化方式,默认情况下,IsReference=false
.
设置IsReference = true
允许序列化可以相互引用的对象树。因此,Employees
对于每个都有一个属性的列表Manager
(谁也是一个),可以保留对for eachEmployee
的引用,而不是在每个节点中嵌入 :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>
摘自此博客的片段,其中包含完整的解释以及应用了属性的生成 XML 的示例。
MSDN- IsReference 属性提供详细信息以及可互操作的对象引用。
于 2009-06-24T12:05:34.097 回答
3
.NET IsReference
Framework 3.5 中也不存在。因此,在将它与该框架版本一起使用时可能会出现错误 - 它仅存在于 4.5、4、3.5 SP1 和 Silverlight 中。
“错误 297 'System.Runtime.Serialization.DataContractAttribute' 不包含 'IsReference' 的定义”
于 2010-04-22T10:21:22.137 回答