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?

Était-ce utile?

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;
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top