Est-il possible de sauvegarder des données arbitraires dans un fichier en C #?
-
06-07-2019 - |
Question
J'ai une classe avec plusieurs collections chargées en mémoire. Est-il possible de savoir comment enregistrer cette classe avec toutes ses données dans un fichier pour pouvoir la recharger simplement en mémoire ultérieurement? Existe-t-il une interface capable de gérer tout cela?
La solution
Ce que vous décrivez est appelé sérialisation . Vous devez initialiser un objet dans un format de données que vous pouvez stocker sur le disque, puis désérialiser ultérieurement ces données dans un objet. Il existe plusieurs façons de procéder, mais la première étape consiste à rendre votre classe sérialisable en ajoutant l'attribut Serializable:
[Serializable]
public class YourClass
{
// the class goes here
}
Vous pouvez ensuite utiliser, par exemple, le XmlSerializer
pour gérer la sérialisation / désérialisation.
Mettre à jour
Je dois mentionner que vous pouvez utiliser XmlSerializer
même si votre classe n'est pas décorée avec l'attribut Serializable
. Cependant, certains autres mécanismes de sérialisation nécessitent l'attribut.
Autres conseils
utilisez BinaryFormatter sérialiser l'instance
Et ajoutez l'attribut [Serializable] devant la définition de classe
Vous pouvez utiliser la fonction de sérialisation .Net, il vous suffit de marquer votre classe avec l'attribut [Serializable] et tous les membres doivent également être sérialisables
Exemple de code:
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class A
{
public static void Serialize(object obj,string filepath)
{
Formatter f = new BinaryFormatter();
f.Serialize(new FileStream(filepath,FileMode.Create),obj);
}
public static A Deserialize(string filepath)
{
Formatter f = new BinaryFormatter();
return f.Deserialize(new FileStream(filepath, FileMode.Open)) as A;
}
}