KelMan:
Τα events - που στην πραγματικότητα είναι
delegates - όταν γίνονται serialize/deserialize κάνουν
serialize/deserialize και τους delegate subscribers, δηλαδή τους event
handlers, ακόμη κι αν αυτοί είναι private members. Αυτό σημαίνει ότι θα
πρέπει να είναι Serializable. Βέβαια, αν δεν κάνω λάθος, η
τυπική συμπεριφορά είναι να πάρεις exception όταν δεν ικανοποιείται η
συνθήκη.
Αυτό σκεφτόμουν κια εγώ. 'Αλλωστε αν ολόκληρη
η class ειναι serializable (και η Α και η Β) τότε λογικά και ο event
handler θα είναι το ίδιο.
Στην VB.NET τουλάχιστον πάντως δεν σου επιτρέπει να ορίσεις explicitly τον handler ως serializable.
KelMan:
Αυτό
που μπορείς να κάνεις είναι να υλοποιήσεις το IDeserializationCallback
interface που σου επιτρέπει να πιάσεις τη στιγμή που γίνεται το
deserialization και να κάνεις inject τον initialization κώδικα (βλ.
AddHandler) που θες.
Αυτό όντως δούλεψε! 'Ελπιζα να μην
χρειαστεί να φτάσω σε αυτό το σημείο (γιατι ουσιαστικά ειναι θεραπεία
παρά πρόληψη) αλλά είναι αρκετά εύκολο να πακετάρω όλα τα handler
registrations της κλασης σε μια μέθοδο και να την καλώ είτε από τον
constructor είτε από το OnDeserialization.
Ευχαριστώ πολύ για τη συμβουλή.