J'ai récemment implémenté une fonction Copier & Coller dans une application sur laquelle je travaille. Cela fonctionne à peu près comme prévu.
Je crée un nouvel élément dans mon interface utilisateur et je peux le copier et le coller aussi souvent que je le souhaite sans aucun problème.
Mais lorsque je copie & coller un élément qui a été produit par une copie précédente & pâte action, j'obtiens un SerializationException
. Il se plaint qu'un certain type ne soit pas marqué comme sérialisable.Mise au point des problèmes de sérialisation en C#
C'est ici que commence la confusion. La première copie & action d'action interagit avec le même type d'objets que le second. Mais la seconde résulte de l'exception.
Pour être un peu plus détaillé, j'ai une classe Slide
, c'est la classe qui est la cible de la copie & opération de collage. Donc, je place une instance de cet objet dans le presse-papiers et je le colle à nouveau dans le même conteneur. Cela fonctionne comme prévu. Maintenant, je copie cet objet inséré et il essaie de le coller. C'est quand l'exception est levée. L'exception se plaint d'une classe SlideEditorUi
. SlideEditorUi
est un UserControl
qui interagit avec une classe appelée SlideEditor
. Qui à son tour interagit avec une instance Slide
. Mais aucune instance Slide
n'a de référence à l'une des classes mentionnées ci-dessus.
Je me demande donc vraiment pourquoi la procédure de sérialisation prend en compte cette classe. Et pourquoi ne fait-il cela que lorsque je copie une copie?
C'était en effet un événement. Je ne savais pas que ceux-ci sont également sérialisés. Merci beaucoup. –
@gencha * stricto sensu * ce n'est pas l'événement qui est sérialisé, mais plutôt le contenu du champ de sauvegarde. Un événement est * un peu * comme une propriété: il définit les méthodes d'accès. 'BinarySerializer' est un sérialiseur de niveau champ, donc contourne ceci. –
Ah, merci pour la clarification. –