Сериализация событий - PullRequest
6 голосов
/ 15 мая 2009

У меня есть класс А, который выставляет событие. объект класса B подписан на событие. Оба экземпляра на самом деле также содержат регулярные ссылки друг на друга. Я хотел бы сериализовать А и сделать так, чтобы оба объекта передавались по проводам для реконструкции на другом конце. Это работает нормально, за исключением того, что подписка на событие не сохраняется.

Я думаю, что мне нужно реализовать свой собственный конструктор сериализации, чтобы «получать уведомления» о десериализации моих объектов, чтобы он мог повторно подписаться на событие.

Однако, похоже, это означает, что я должен полностью реализовать seialization самостоятельно, внедрив ISerializable. Теперь я полагаюсь на BinaryFormatter и атрибуты [Serializable], и ​​мне это очень нравится.

Кто-нибудь знает, как я могу получать уведомления о десериализации, и в то же время могу использовать встроенную систему сериализации для автоматической сериализации и десериализации моего довольно сложного графа объектов?

Спасибо, Лукас

1 Ответ

8 голосов
/ 15 мая 2009

Стандартный (не XML) механизм сериализации использует специальные атрибуты для маркировки методов, которые будут использоваться в качестве обратных вызовов при (де) сериализации. OnDeserializedAttribute - это то, что вы ищете. Аналогичное решение реализует интерфейс IDeserializationCallback .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...