2009-05-15 5 views
6

私はイベントを公開するクラスAを持っています。そのイベントにサブスクライブしたクラスBのオブジェクト。 両方のインスタンスは、実際には相互に定期的な参照を保持します。 私はAをシリアル化し、両方のオブジェクトをワイヤで転送して、もう一方の端で再構築したいと思います。イベントサブスクリプションが保持されないことを除いて、これは正常に動作します。イベントをシリアライズ

自分のオブジェクトが直列化解除されたときに「通知される」ために独自の直列化コンストラクタを実装する必要があると思うので、イベントに再登録できます。

しかし、それは私が完全にISerializableを実装することによってシリアライズを実装しなければならないということになります。私は今、BinaryFormatterと[Serializable]属性に頼っています。

誰も私がシリアル化されたシリアライズシステムを使って自動的にシリアライズすることができるうちに、デシリアライズの通知を受け取る方法を知っていますか?&私の幾分複雑なオブジェクトグラフをデシリアライズしますか?

おかげで、ルーカス

答えて

8

標準(非XML)シリアル化メカニズムは、(デ)シリアライズ中にコールバックとして使用する方法をマークするために特別な属性を使用します。 OnDeserializedAttributeはあなたが探しているものです。同様の解決策は、IDeserializationCallbackインターフェイスを実装しています。

+0

偉大な答え。サブスクリプションコードが正常に機能したにもかかわらず、なぜ私のイベントが常にヌルであったのかを調べるために、2時間にわたって自分のコードを見つめました。 –