NetDataContractSerializerがシリアル化されたコレクションに「nil」エントリを追加する理由を誰かが知っていますか?
例えば、
<Jobs z:Id="17">
<_items z:Id="18" z:Size="4">
<JobRecord z:Id="19">
<Name z:Id="20">Job1</Name>
</JobRecord>
<JobRecord i:nil="true" />
<JobRecord i:nil="true" />
<JobRecord i:nil="true" />
</_items>
<_size>1</_size>
<_version>2</_version>
</Jobs>
3つの追加の「JobRecord」エントリと「ねえ、ここに4つのノードがあることはわかっていますが、そのうちの1つだけが何かを意味します」という追加の要素に注意してください。
奇妙な振る舞いのようです。さて、NDCSがオブジェクトグラフを深く覗き込んでいて、シリアル化されているアイテムの数よりも大きいサイズのバッキング配列をいじっている可能性があることがわかりました(リストのバッキング配列を考えてみてください)。
それはここで何が起こっているのですか?これは、コンストラクターが処理するために作成するクラスyield return
(JobRecordのソース)のアーティファクトですか?