Tenho uma lista de objetos e preciso salvá-la em algum lugar do meu computador. Eu li alguns fóruns e sei que o objeto tem que ser Serializable
. Mas seria bom se eu pudesse obter um exemplo. Por exemplo, se eu tiver o seguinte:
[Serializable]
public class SomeClass
{
public string someProperty { get; set; }
}
SomeClass object1 = new SomeClass { someProperty = "someString" };
Mas como posso armazenar object1
em algum lugar no meu computador e depois recuperar?
c#
serialization
stream
Tono Nam
fonte
fonte
Respostas:
Você pode usar o seguinte:
fonte
string attributeXml = string.Empty;
emDeSerializeObject
nunca seja usado;)Acabei de escrever uma postagem no blog sobre como salvar os dados de um objeto em Binário, XML ou Json . Você está correto ao dizer que deve decorar suas classes com o atributo [Serializable], mas apenas se estiver usando a serialização binária. Você pode preferir usar a serialização XML ou Json. Aqui estão as funções para fazer isso nos vários formatos. Veja minha postagem do blog para mais detalhes.
Binário
XML
Requer que o assembly System.Xml seja incluído em seu projeto.
Json
Você deve incluir uma referência ao assembly Newtonsoft.Json, que pode ser obtido no pacote Json.NET NuGet .
Exemplo
fonte
Você precisará serializar para algo: isto é, escolher binário ou xml (para serializadores padrão) ou escrever um código de serialização personalizado para serializar em algum outro formato de texto.
Depois de escolher isso, sua serialização (normalmente) chamará um Stream que está gravando em algum tipo de arquivo.
Então, com seu código, se eu estivesse usando serialização XML:
Então, para desserializar:
NOTA: Este código não foi compilado, muito menos executado - pode haver alguns erros. Além disso, isso pressupõe uma serialização / desserialização totalmente pronta para uso. Se precisar de um comportamento personalizado, você precisará fazer um trabalho adicional.
fonte
1. Restaurar objeto do arquivo
A partir daqui, você pode desserializar um objeto do arquivo de duas maneiras.
Solução 1: leia o arquivo em uma string e desserialize o JSON para um tipo
Solução 2: desserializar JSON diretamente de um arquivo
2. Salvar objeto para arquivo
a partir daqui, você pode serializar um objeto para um arquivo de duas maneiras.
Solução 1: serializar JSON em uma string e, em seguida, gravar a string em um arquivo
Solução 2: serializar JSON diretamente em um arquivo
3. Extra
Você pode baixar Newtonsoft.Json de NuGet seguindo o comando
fonte
** 1. Converta a string json em base64string e grave ou anexe-a ao arquivo binário. 2. Leia base64string do arquivo binário e desserialize usando BsonReader. **
fonte
Você pode usar o JsonConvert da biblioteca Newtonsoft. Para serializar um objeto e gravar em um arquivo no formato json:
E para desserializar de volta no objeto:
fonte