web-dev-qa-db-fra.com

Propriété isréférence dans le contrat de données

Quel est le but de IsReference propriété dans DataContract? Comment la demande et la réponse varient-elles avec cette propriété appliquée?

48
web dunia

Il détermine comment les objets sont sérialisés, par défaut, IsReference=false.

Réglage IsReference = true permet la sérialisation des arbres d'objets pouvant se référencer. Donc, avec une liste de Employees que chacun a une propriété pour Manager (qui est également un Employee), une référence au Manager pour chaque Employee peut être tenu plutôt que d'intégrer le Manager dans chaque Employee noeud:

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> 

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

Les extraits prélevés à partir de ceci Weblog qui a une explication complète avec des exemples de XML générés avec la propriété appliquée.

MSDN - Isreference Property fournit des détails aussi bien que Références d'objet interopérable .

62
Tanner

Aussi IsReference n'existe pas dans .NET Framework 3.5. Vous pouvez donc avoir des erreurs lorsque vous l'utilisez avec cette version-cadre - il n'existe que dans 4,5, 4, 3,5 SP1 et Silverlight.

"Erreur 297 ''" System.Runtime.Serialization.DatacontractAttribute "ne contient pas de définition pour 'isreference'"

3
Andriy Buday