Как XML сериализовать событие в C # - PullRequest
2 голосов
/ 07 мая 2011

У меня есть несколько событий в классе. Хотя я сериализирую их, используя NetDataContractSerializer, события не сериализуются. Можно ли как-нибудь сериализовать событие xml, как это делает BinarySerializer?

Ответы [ 2 ]

3 голосов
/ 07 мая 2011

Нет, нет пути.Формат XML не сохраняет информацию о типе, такую ​​как BinarySerializer.В отличие от двоичного формата, используемого двоичным сериализатором, XML является совместимым форматом, и поскольку события являются специфическими артефактами .NET, их нельзя транспортировать.

1 голос
/ 07 мая 2011

Не сериализуйте делегатов и события вслепую

обычно не следует сериализовать делегаты класса или события. Это потому что сериализация у него полная граф объекта в игру, и делегаты по натуре сериализует вашу список подписчиков в миксе (список вызовов). ты никогда не сможешь сделать уверен, что все ваши подписчики Сериализуемый, а вы?

Итак, вы должны поставить [NonSerialized] на делегаты.

о событиях (с ключевым словом события), которые вы можно использовать

Атрибут [Field: NonSerialized] («Поле» находится в System.Reflection)

Источник

...