Je ne m'attendais pas à rencontrer cette erreur. J'imagine que je fais quelque chose de mal ailleurs.Sérialiser ma classe échoue à cause d'un gestionnaire d'événement
J'ai une application MVVM. Mon modèle peut se sérialiser avec un BinaryFormatter
. Cela fonctionnait bien.
Aujourd'hui, j'ai ajouté un gestionnaire d'événement à mon modèle, et le modèle de vue qui contient le modèle est abonné à cet événement.
Maintenant, quand j'essaie de sérialiser le modèle, j'obtiens une erreur parce que mon viewmodel n'est pas sérialisable (par conception).
Je suis sûr que c'est à l'abonnement à l'événement, parce que j'ai supprimé l'abonnement (et seulement cela) et la sérialisation fonctionne à nouveau.
Je ne peux pas appliquer l'attribut [NonSerialized]
au gestionnaire car ce n'est pas un champ.
Y at-il un moyen de contourner ce problème?
Pour info, ceci est juste l'un des nombreux pièges avec BinaryFormatter. IMO ce n'est pas le sérialiseur idéal. Je vous conseille de regarder XmlSerializer, DataContractSerializer ou protobuf-net –