51

IsReferenceのプロパティの目的は何DataContractですか? このプロパティが適用されると、リクエストとレスポンスはどのように変化しますか?

4

2 に答える 2

65

オブジェクトがどのようにシリアル化されるかを決定します。デフォルトではIsReference=false.

設定IsReference = trueにより、相互に参照できるオブジェクトのツリーをシリアル化できます。Employeesそのため、それぞれが for プロパティを持つManager(who も)のリストを使用すると、各ノード内にを埋め込むのではなく、 for eachEmployeeへの参照を保持できます。ManagerEmployeeManagerEmployee

IsReference=false生成されます:

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

asIsReference=trueが生成する場所:

<Employee z:Id=“i1“ xmlns:z=“http://schemas.microsoft.com/2003/10/Serialization/“&gt; 
      <Manager i:nil=“true“ />  
      <Name>Kenny</Name> 
</Employee> 
<Employee z:Id=“i2“ xmlns:z=“http://schemas.microsoft.com/2003/10/Serialization/“&gt; 
      <Manager z:Ref=“i1“ />  
      <Name>Bob</Name> 
</Employee> 
<Employee z:Id=“i3“ xmlns:z=“http://schemas.microsoft.com/2003/10/Serialization/“&gt; 
      <Manager z:Ref=“i1“ />  
      <Name>Alice</Name> 
</Employee> 

プロパティが適用されて生成された XML の例とともに完全な説明が含まれているこのウェブログから抜粋したスニペット。

MSDN- IsReference プロパティは、詳細と相互運用可能なオブジェクト参照を提供します。

于 2009-06-24T12:05:34.097 に答える
3

Also IsReference does not exist in .NET Framework 3.5. So you could get errors when using it with that Framework version - it only exists in 4.5, 4, 3.5 SP1 and Silverlight.

"Error 297 'System.Runtime.Serialization.DataContractAttribute' does not contain a definition for 'IsReference' "

于 2010-04-22T10:21:22.137 に答える