IsReference
のプロパティの目的は何DataContract
ですか? このプロパティが適用されると、リクエストとレスポンスはどのように変化しますか?
2 に答える
オブジェクトがどのようにシリアル化されるかを決定します。デフォルトではIsReference=false
.
設定IsReference = true
により、相互に参照できるオブジェクトのツリーをシリアル化できます。Employees
そのため、それぞれが for プロパティを持つManager
(who も)のリストを使用すると、各ノード内にを埋め込むのではなく、 for eachEmployee
への参照を保持できます。Manager
Employee
Manager
Employee
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/“>
<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>
プロパティが適用されて生成された XML の例とともに完全な説明が含まれているこのウェブログから抜粋したスニペット。
MSDN- IsReference プロパティは、詳細と相互運用可能なオブジェクト参照を提供します。
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' "