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 .