数据契约中的IsReference属性

时间:2009-06-24 08:57:28

标签: wcf datacontract

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

2 个答案:

答案 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'的定义”