Domanda

Ho una classe con molte raccolte caricate in memoria. È possibile in qualche modo come salvare questa classe con tutti i suoi dati in un file per poterlo ricaricare in memoria in un secondo momento? Esiste un'interfaccia in grado di gestire tutto questo?

È stato utile?

Soluzione

Quello che stai descrivendo si chiama serializzazione . Puoi scansionare un oggetto in un formato di dati che puoi archiviare su disco, e successivamente puoi deserializzare quei dati in un oggetto. Esistono molti modi per farlo, ma il primo passo sarà rendere la tua classe serializzabile, aggiungendo l'attributo Serializable:

[Serializable]
public class YourClass
{    
    // the class goes here
}

Quindi puoi usare ad esempio il Classe XmlSerializer per gestire la serializzazione / deserializzazione.

Aggiorna
Devo dire che puoi usare XmlSerializer anche se la tua classe non è decorata con l'attributo Serializable . Tuttavia, alcuni altri meccanismi di serializzazione richiedono l'attributo.

Altri suggerimenti

usa BinaryFormatter per serializzare l'istanza

E aggiungi l'attributo [Serializable] davanti alla definizione della classe

Puoi usare la funzione di serializzazione .Net, devi solo contrassegnare la tua classe con l'attributo [Serializable] e tutti i membri dovrebbero essere anche serializzabili

Codice di esempio:

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;
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top