visual studio serialize data wcf datacontract

wcf - studio - Propiedad IsReference en contrato de datos



reference datacontract (2)

¿Cuál es el propósito de la propiedad IsReference en DataContract ? ¿Cómo varía la solicitud y la respuesta con esta propiedad aplicada?


Además, IsReference no existe en .NET Framework 3.5. Por lo tanto, puede obtener errores al usarlo con esa versión de Framework, solo existe en 4.5, 4, 3.5 SP1 y Silverlight.

"Error 297 ''System.Runtime.Serialization.DataContractAttribute'' no contiene una definición para ''IsReference''"


Determina cómo se serializan los objetos, de forma predeterminada, IsReference=false .

Establecer IsReference = true permite la serialización de árboles de objetos que pueden referenciarse entre sí. Entonces, con una lista de Employees que cada uno tiene una propiedad para el Manager (que también es un Employee ), se puede retener una referencia al Manager para cada Employee lugar de incrustar el Manager dentro de cada nodo Employee :

IsReference=false produciría:

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

Donde IsReference=true produciría:

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

Fragmentos tomados de este weblog que tiene una explicación completa junto con ejemplos del XML generado con la propiedad aplicada.

MSDN: la propiedad IsReference proporciona detalles y referencias de objetos interoperables .