Y at-il un raccourci binaire désérialiser chaque propriété dans un objet?
-
26-09-2019 - |
Question
S'il y a un objet dans lequel tous les biens publics doit être sérialisé et les propriétés sont simples (seulement des nombres ou des chaînes ou des objets déjà mise en œuvre ISerializable
), est-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?
Je sais que cela peut se faire manuellement avec la réflexion, mais est-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. Ajoutez plutôt le droit d'attribut [Serializable] avant votre déclaration de classe.
La solution
Essayez la classe BinaryFormatter - devrait faire ce que vous avez besoin
EDIT: Vous ne proviennent pas de BinaryFormatter - il est une classe utilitaire que vous utilisez pour faire vos sérialisation. Voici un exemple copié de la documentation
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();