Velvet Star Monitor

Standout celebrity highlights with iconic style.

general

IsReference property in data contract

Writer Emily Wong

What is the purpose of IsReference property in DataContract? How does the request and response vary with this property applied?

0

2 Answers

It determines how objects are serialized, by default, IsReference=false.

Setting IsReference = true allows the serialization of trees of objects that can reference each other. So with a list of Employees that each have a property for Manager (who is also an Employee), a reference to the Manager for each Employee can be held rather than embedding the Manager within each Employee node:

IsReference=false would produce:

<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> 

Where as IsReference=true would produce:

<Employee z:Id=“i1“ xmlns:z=“ <Manager i:nil=“true“ /> <Name>Kenny</Name>
</Employee>
<Employee z:Id=“i2“ xmlns:z=“ <Manager z:Ref=“i1“ /> <Name>Bob</Name>
</Employee>
<Employee z:Id=“i3“ xmlns:z=“ <Manager z:Ref=“i1“ /> <Name>Alice</Name>
</Employee> 

Snippets taken from this weblog that has a full explanation along with examples of the generated XML with the property applied.

MSDN - IsReference Property provides details as well as Interoperable Object References.

0

Also IsReference does not exist in .NET Framework 3.5. So you could get errors when using it with that Framework version - it only exists in 4.5, 4, 3.5 SP1 and Silverlight.

"Error 297 'System.Runtime.Serialization.DataContractAttribute' does not contain a definition for 'IsReference' "

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy