Quel est le but de la propriété IsReference dans le contrat de données. Comment la demande et la réponse varient-elles avec cette propriété appliquée ?
Réponses
Trop de publicités?Il détermine comment les objets sont sérialisés, par défaut, IsReference=false
.
Réglage de IsReference = true
permet la sérialisation d'arbres d'objets qui peuvent se référencer les uns les autres. Ainsi, avec une liste de Employees
qui ont chacune une propriété pour Manager
(qui est aussi un Employee
), une référence à la Manager
pour chaque Employee
peut être tenue plutôt que d'intégrer la Manager
au sein de chaque Employee
nœud :
IsReference=false
produirait :
<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>
Où comme IsReference=true
produirait :
<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>
Extraits de ce document weblog qui contient une explication complète ainsi que des exemples du XML généré avec la propriété appliquée.
MSDN - Propriété IsReference fournit des détails ainsi que Références d'objets interopérables .
De plus, IsReference n'existe pas dans .NET Framework 3.5. Vous risquez donc d'obtenir des erreurs en l'utilisant avec cette version du framework - il n'existe que dans 4, 3.5 SP1 et 3.0.
"Erreur 297 'System.Runtime.Serialization.DataContractAttribute' ne contient pas de définition pour 'IsReference'".