Pregunta

Tengo una clase con muchas colecciones cargadas en la memoria. ¿Es posible de alguna manera guardar esta clase con todos sus datos en un archivo para poder simplemente recargarla en la memoria más tarde? ¿Hay una interfaz que pueda manejar todo esto?

¿Fue útil?

Solución

Lo que estás describiendo se llama serialización . Searializa un objeto en algún formato de datos que puede almacenar en el disco, y luego puede deserializar esos datos en un objeto. Hay muchas maneras de hacer esto, pero el primer paso será hacer que su clase sea serializable, agregando el atributo Serializable:

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

Luego puede usar, por ejemplo, el XmlSerializer para manejar la serialización / deserialización.

Actualizar
Debo mencionar que puede usar XmlSerializer incluso si su clase no está decorada con el atributo Serializable . Sin embargo, algunos otros mecanismos de serialización requieren el atributo.

Otros consejos

use BinaryFormatter para serializar la instancia

Y agregue el atributo [Serializable] delante de la definición de la clase

Puede usar la facilidad de serialización .Net, solo tiene que marcar su clase con el atributo [Serializable] y todos los miembros también deben ser serializables

Código de muestra:

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;
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top