2009-06-24 10 views

Respuesta

57

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

La configuración IsReference = true permite la serialización de árboles de objetos que pueden referenciarse entre sí. Así, con una lista de Employees que cada uno tiene una propiedad para Manager (que también es un Employee), una referencia a la Manager para cada Employee puede ser considerado en lugar de incrustar el Manager dentro de cada Employee nodo:

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 como 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 - IsReference Property proporciona detalles así como Interoperable Object References.

+1

1 para el enlace webblog. Eso ayudó mucho. – Darcy

2

También 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'"

Cuestiones relacionadas