IsReference
のDataContract
プロパティの目的は何ですか?このプロパティを適用すると、要求と応答はどのように異なりますか?
オブジェクトのシリアル化方法を決定します。デフォルトでは、IsReference=false
。
設定IsReference = true
は、相互に参照できるオブジェクトのツリーのシリアル化を許可します。したがって、Employees
のリストを持つManager
(Employee
でもある)のリストを使用すると、各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>
どことしてIsReference=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>
これから抜粋したスニペット weblog これには、プロパティが適用されて生成されたXMLの例とともに完全な説明があります。
MSDN- IsReferenceプロパティ は Interoperable Object References と同様に詳細を提供します。
また、IsReference
は.NET Framework 3.5には存在しません。そのため、そのフレームワークバージョンで使用するとエラーが発生する可能性があります。これは、4.5、4、3.5 SP1およびSilverlightにのみ存在します。
「エラー297 'System.Runtime.Serialization.DataContractAttribute'には 'IsReference'の定義が含まれていません」