¿Es posible guardar datos arbitrarios en un archivo en C #?
-
06-07-2019 - |
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?
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;
}
}