2010-08-07 4 views
2

S'il existe un objet dans lequel toutes les propriétés publiques doivent être sérialisées et si les propriétés sont simples (nombres ou chaînes ou objets implémentant déjà ISerializable), existe-t-il un moyen facile de le faire sans avoir à créer GetObjectData(SerializationInfo info, StreamingContext context) et un constructeur prenant SerializationInfo comme argument à chaque fois?Existe-t-il un raccourci vers la sérialisation binaire de toutes les propriétés d'un objet?

Je sais que cela peut être fait manuellement avec la réflexion, mais y at-il une méthode magique dans le .NET Framework pour le faire?


La réponse correcte est:

Ne pas essayer de mettre en œuvre ISerializable - il est pour la sérialisation personnalisée. Au lieu de cela, ajoutez l'attribut [Serializable] juste avant la déclaration de votre classe.

Répondre

4

Essayez la classe BinaryFormatter - devrait faire ce que vous avez besoin

EDIT: Vous ne tirez pas de BinaryFormatter - il est une classe utilitaire que vous utilisez pour faire vos sérialisation. Voici un exemple copié à partir des documents

MyObject obj = new MyObject(); 
obj.n1 = 1; 
obj.n2 = 24; 
obj.str = "Some String"; 
IFormatter formatter = new BinaryFormatter(); 
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None); 
formatter.Serialize(stream, obj); 
stream.Close(); 
+0

Convenu. Voici un lien vers les documents: http://msdn.microsoft.com/fr-fr/library/system.runtime.serialization.formatters.binary.binaryformatter.aspx – kbrimington

+0

De quoi ai-je besoin précisément pour faire? Il semble impossible de dériver de 'BinaryFormatter', car il est scellé. Dois-je passer un argument spécifique à 'Serialize' /' Deserialize'? –

+0

modifié pour ajouter un échantillon – Ray

Questions connexes