1

オブジェクトのグラフをシリアル化するために、バイナリシリアル化(BinaryFormatterなどを使用)を使用しています。これらのオブジェクトの中には、追加のプロパティとメソッドを除いて、列挙型に似た特定のタイプのフィールドを持つものがあります。

この列挙型のようなオブジェクトが逆シリアル化されるたびに、その型の新しいインスタンスが作成されるという問題。完全に新しいオブジェクトを作成する代わりに、既存のオブジェクトのセットの1つを返すことができる特別な逆シリアル化メソッドはありますか?

列挙型オブジェクトを含むタイプごとにこれを行う方法を聞いたことがありますが、列挙型オブジェクトを含むクラスが列挙型の既存のオブジェクトを調べて自動的に逆シリアル化するようにしたいと思います。 。

(それが重要な場合に備えて、なぜ私はこれが欲しいのですか?

  1. 等式が簡単になります。Equals、GetHashCode、==、および!=をオーバーライドして、IEquatableを実装する代わりに、デフォルトの参照比較演算子を使用できます。

  2. 列挙型オブジェクトの一部のデータが変更される可能性があります。シリアル化されたデータを、多くのコードなしで新しいデータに更新する必要があります。(列挙型オブジェクトには、変更されないフィールドがあることに注意してください。))

4

1 に答える 1

1

これは。で行いISerializationSurrogateます。

いくつかのサンプルコードについては、ここを参照してください。

アップデート

私の場合、SymbolIdおよびbool値型の既存の(ボックス化された)インスタンスを再利用する必要があります。

于 2011-07-19T11:57:25.057 に答える