É possível salvar os dados arbitrários para um arquivo em C #?
-
06-07-2019 - |
Pergunta
Eu tenho uma classe com muitas coleções carregados na memória. É possível de alguma forma salvar esta classe com todos os seus dados em um arquivo para ser capaz de simplesmente carregá-lo para a memória mais tarde? Existe uma interface que iria lidar com tudo isso?
Solução
O que você está descrevendo é chamado serialização . Você searialize um objeto em algum formato de dados que você pode armazenar no disco, e em seguida, mais tarde você pode desserializar que os dados em um objeto. Há muitas maneiras de fazer isso, mas o primeiro passo será fazer o seu serializável classe, adicionando o atributo Serializable:
[Serializable]
public class YourClass
{
// the class goes here
}
Então você pode usar, por exemplo, o XmlSerializer
classe para lidar com a serialização / desserialização.
Atualizar
Devo mencionar que você pode usar XmlSerializer
mesmo se sua classe não é decorada com o atributo Serializable
. No entanto, alguns outros mecanismos de serialização exigem o atributo.
Outras dicas
BinaryFormatter para serializar a instância
E adicione o atributo [Serializable] na frente da definição de classe
Você pode usar o recurso Net serialização, assim você tem que marcar a sua classe com o atributo [Serializable] e todos os membros deve ser também serializable
Exemplo de código:
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;
}
}