SOAP/XML を使用して HashTable (または文字列インデクサーを介してナビゲートするのが最適なデータ) をシリアル化する最良の方法は何ですか?
Foo
プロパティを持つがあるとしましょうBar[] Bars
。Bar
オブジェクトにはキーと値があります。デフォルトでは、これは次の XML にシリアル化されます。
<Foo>
<Bars>
<Bar key="key0" value="value0"/>
...
</Bars>
</Foo>
JSON の場合、これは次のようにシリアル化されます。
{"Foo":["Bars":[{"Key":"key0","Value":"key1} ... ]}]}
私が本当に望んでいるのは、根底にある関係をよりよく反映するために、このシリアライズです。例えば、
<Foo>
<Bars>
<Key0 value="value0"/>
<Key1 value="value1"/>
...
</Bars>
</Foo>
この方法で SOAP にシリアル化することにはいくつかの課題があることは理解していますが、これをより適切に反映するスキーマを提供するための最良のアプローチは何ですか?
BarsCollection オブジェクトを作成し、その上でカスタム シリアライゼーションを定義しようとしましたが、実際にはそのオブジェクトでシリアライゼーションを呼び出すようには見えません。例えば
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) {
foreach (Bar bar in Bars){
info.AddValue(bar.Key. bar);
}
}
助言がありますか?ここでのベストプラクティスは何ですか?