1

カスタムシリアライゼーションを使用してアプリのデータをシリアライズしています。つまり、保存している各クラスには[Serializable]属性と実装がありますISerializable。シリアル化されているオブジェクト グラフは、オブジェクト/クラス間の相互参照が多く、かなり複雑です。シリアル化は機能しますが、かなり遅いです。:(

関連する各クラスのGetObjectDataメソッドにブレークポイントを設定すると、オブジェクトよりもはるかに多くのヒットが得られることがわかりました。

私は混乱しています - シリアライゼーションフレームワークについての私の理解は、オブジェクトグラフに複数の参照が含まれていても、各オブジェクトを一度だけ保存するというものでした。これは、保存中に各オブジェクトのGetObjectDataメソッドを一度だけ呼び出す必要があることを意味すると思いました。私が間違っている?

もしそうなら、クラスのGetObjectDataメソッドへの呼び出しの数を減らすために、このアプローチでできることはありますか?

ありがとう。

4

1 に答える 1

3

MSDNのドキュメントでは、オブジェクト インスタンスごとに 1 つの呼び出しのみが保証されるわけではありません。

さまざまなフォーマッターでこれを試しましたか? これを改善するために選択された作業が行われているという趣旨のコメントがここにあります。Indigo (別名 WCF) 専用です。

シリアル化中に、このメソッドがオブジェクト インスタンスごとに 1 回だけ呼び出されることは保証されていません。したがって、メソッドは、呼び出された回数に関係なく動作が同じになるように実装する必要があります。

于 2010-10-05T16:40:07.973 に答える