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?

Foi útil?

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;
}
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top