340 votes

Quand dois-je utiliser [Serializable] en c# ?

J’ai trouvé certains que l’utilisation des classes cet attribut [Serializable].

  • Qu'est-ce que c'est ?
  • Quand dois-je utiliser ?
  • Quels avantages vais-je obtenir ?

S’il vous plaît m’expliquer avec des exemples simples puisque je suis juste un débutant.

390voto

CharithJ Points 15364

Quel est-il ?

Lorsque vous créez un objet dans une .Net framework application, vous n'avez pas besoin de penser à la façon dont les données sont stockées dans la mémoire. Parce que .Net framework prend en charge pour vous. Cependant, si vous souhaitez stocker le contenu d'un objet à un fichier, envoyer un objet à un autre processus ou de la transmettre à travers le réseau, vous n'avez qu'à penser à la façon dont l'objet est représenté parce que vous aurez besoin de le convertir dans un format différent. Cette conversion est appelée la SÉRIALISATION.

Utilise pour la Sérialisation

La sérialisation permet au développeur d'enregistrer l'état d'un objet et de le recréer en tant que de besoin, de fournir l'entreposage d'objets ainsi que l'échange de données. Grâce à la sérialisation, un développeur peut effectuer des actions comme l'envoi de l'objet à une application à distance par le biais d'un Service Web, en passant d'un objet à partir d'un domaine à un autre, en passant d'un objet à travers un pare-feu comme une chaîne de caractères XML, ou le maintien de la sécurité ou des informations spécifiques à l'utilisateur à travers les applications.

Appliquer l' SerializableAttribute d'attribut d'un type d'indiquer que les cas de ce type peut être sérialisé. Appliquer l' SerializableAttribute d'attribut, même si la classe implémente l' ISerializable interface pour contrôler le processus de sérialisation.

Tous les champs publiques et privées dans un type qui sont marqués par l' SerializableAttribute sont sérialisés par défaut, à moins que le type implémente l' ISerializable interface pour remplacer le processus de sérialisation. La sérialisation par défaut processus exclut les champs marqués avec l' NonSerializedAttribute d'attribut. Si un champ d'un serializable type contient un pointeur, une poignée ou une autre structure de données qui est spécifique à un environnement particulier, et ne peuvent être parfaitement reconstitué dans un environnement différent, alors vous pourriez vouloir appliquer l' NonSerializedAttribute attribut à ce domaine.

Voir MSDN pour plus de détails

45voto

Bradley Smith Points 6285

Quelques utilisations pratiques de l' [Serializable] d'attribut:

  • Économie d'état de l'objet à l'aide de la sérialisation binaire; vous pouvez très facilement 'enregistrer' ensemble des instances de l'objet de votre demande à un fichier ou d'un flux réseau, puis de les recréer en deserialising - découvrez l' BinaryFormatter de la classe dans le Système.Moment de l'exécution.La sérialisation.Des formateurs.Binaire
  • L'écriture des classes dont les instances d'objets peuvent être stockés dans le presse-papiers à l'aide de Clipboard.SetData() - nonserialisable classes ne peuvent pas être placés dans le presse-papiers.
  • L'écriture de classes qui sont compatibles avec .NET Remoting, de manière générale, toute instance de classe vous passez entre les domaines d'application (à l'exception de celles qui s'étendent à partir d' MarshalByRefObject) doit être serialisable.

Ce sont les plus communs d'utilisation les cas que j'ai rencontré.

19voto

Akshay Points 57

Ici est court exemple de la façon dont la sérialisation des œuvres. J'étais aussi en train d'apprendre au sujet de la même et j'ai trouvé deux liens utiles. Ce que la Sérialisation est et comment il peut être fait .NET http://msdn.microsoft.com/en-us/library/vstudio/ms233843.aspx Un exemple de programme d'expliquer la sérialisation http://blog.kowalczyk.info/article/8n/Serialization-in-C.html

Si vous ne comprenez pas le programme ci-dessus un de beaucoup plus simple programme avec explication est donnée ici http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=94

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X