2009-05-15 1 views
6

Ich habe Klasse A, die ein Ereignis darstellt. ein Gegenstand der Klasse B, der die Veranstaltung abonniert hat. Beide Instanzen enthalten auch tatsächlich einen regelmäßigen Verweis aufeinander. Ich möchte A serialisieren und beide Objekte über die Leitung übertragen, um am anderen Ende rekonstruiert zu werden. Dies funktioniert einwandfrei, außer dass das Ereignisabonnement nicht beibehalten wird.Serialisierung Ereignisse

Ich denke, ich muss meinen eigenen Serialisierungskonstruktor implementieren, um "benachrichtigt" zu werden, wenn meine Objekte deserialisiert werden, damit sie das Ereignis erneut abonnieren kann.

Allerdings sieht es so aus, dass ich die Seialisierung selbst implementieren muss, indem ich ISerializable implementiert habe. Ich verlasse mich jetzt auf BinaryFormatter und [Serializable] -Attribute und mag das wirklich sehr.

Kennt jemand eine Möglichkeit für mich, bei der Deserialisierung benachrichtigt zu werden, während ich immer noch in der Lage bin, das eingebaute Serialisierungssystem zur automatischen Serialisierung von & zu verwenden, um mein etwas komplexes Objektdiagramm für mich zu deserialisieren?

Danke, Lucas

Antwort

8

Der Standard (non-XML) Serialisierungsmechanismus verwendet spezielles Attribut Methoden zu markieren, wie Rückrufe während (de) Serialisierung verwendet werden sollte. OnDeserializedAttribute ist was du suchst. Eine ähnliche Lösung implementiert IDeserializationCallback Schnittstelle.

+0

Große Antwort. Ich starrte 2 Stunden lang auf meinen Code und versuchte herauszufinden, warum mein Event immer null war, obwohl der Subscription-Code einwandfrei funktionierte. –