IsReference
中DataContract
属性的目的是什么?请求和响应如何随应用此属性而变化?
答案 0 :(得分:62)
它确定对象的序列化方式,默认为IsReference=false
。
设置IsReference = true
允许序列化可以互相引用的对象树。因此,对于Employees
列表,每个列表都有Manager
的属性(也是Employee
),每个Manager
的{{1}}可以引用保持而不是在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
从此weblog获取的片段,其中包含完整说明以及已应用属性的生成XML示例。
MSDN - IsReference Property提供详细信息以及Interoperable Object References。
答案 1 :(得分:3)
.NET Framework 3.5中也不存在IsReference
。因此,在使用该框架版本时可能会出现错误 - 它只存在于4.5,4,3.5 SP1和Silverlight中。
“错误297'System.Runtime.Serialization.DataContractAttribute'不包含'IsReference'的定义”