O conceito de serialização e desserialização é usado sempre que dados pertencentes a objetos precisam ser enviados de um aplicativo para outro. A serialização é usada para exportar dados do aplicativo para um arquivo. O aplicativo de destino então usa a desserialização para extrair os dados do aplicativo para uso posterior.
A serialização é um conceito no qual os objetos da classe C # são gravados ou serializados em arquivos. Digamos que você tenha uma classe C # chamada Tutorial. E a classe tem 2 propriedades de ID e nome de Tutoriais.
A serialização pode ser usada para gravar diretamente as propriedades de dados da classe Tutorial em um arquivo. A desserialização é usada para ler os dados do arquivo e construir o objeto Tutorial novamente.
Vejamos um exemplo de como podemos conseguir isso.
Em nosso exemplo, vamos realizar as etapas de alto nível abaixo no código
- Crie uma classe chamada Tutorial que tem 2 propriedades, a saber ID e Nome
- Em seguida, criaremos um objeto da classe e atribuiremos um valor "1" à propriedade ID e um valor ".Net" à propriedade name.
- Em seguida, usaremos a serialização para serializar o objeto acima em um arquivo chamado Example.txt
- Por fim, usaremos a desserialização para desserializar o objeto do arquivo e exibir os valores no Console.
Insira o código abaixo no arquivo program.cs do aplicativo de console.
Etapa 1) A primeira etapa é adicionar a classe que será usada para serialização
Explicação do código: -
- A classe que precisa ser serializada precisa ter o atributo [Serializable]. Esta é uma palavra-chave em C #. Esta palavra-chave é então anexada à classe Tutorial. Se você não mencionar esse atributo, receberá um erro ao tentar serializar a classe.
- A seguir está a definição da classe que será serializada. Aqui estamos definindo uma classe chamada "Tutorial" e fornecendo 2 propriedades, uma é "ID" e a outra é "Nome".
Etapa 2) Nesta etapa, primeiro iremos criar o objeto da classe Tutorial e serializá-lo para o arquivo chamado Example.txt
Explicação do código: -
- Primeiro, criamos um objeto da classe Tutorial. Em seguida, atribuímos o valor de "1" a ID e ".net" à propriedade de nome.
- Em seguida, usamos a classe de formatador que é usada para serializar ou converter o objeto em um formato binário. Os dados do arquivo em serialização são feitos em formato binário. Em seguida, criamos um objeto de fluxo de arquivo. O objeto de fluxo de arquivo é usado para abrir o arquivo Example.txt para fins de gravação. As palavras-chave FileMode.Create e FileMode.Write são usadas para mencionar especificamente que o arquivo deve ser aberto para fins de gravação.
- Finalmente, usamos o método Serialize para transferir os dados binários para o arquivo. Em seguida, fechamos o fluxo, uma vez que a operação de gravação está concluída.
Etapa 3) Finalmente, para garantir que os dados estejam presentes no arquivo, usamos a desserialização para desserializar o objeto do arquivo.
using System;using System.IO;using System.Linq;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Text;using System.Threading.Tasks;namespace DemoApplication{[Serializable]class Tutorial{public int ID;public String Name;static void Main(string[] args){Tutorial obj = new Tutorial();obj.ID = 1;obj.Name = ".Net";IFormatter formatter = new BinaryFormatter();Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);formatter.Serialize(stream, obj);stream.Close();stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);Tutorial objnew = (Tutorial)formatter.Deserialize(stream);Console.WriteLine(objnew.ID);Console.WriteLine(objnew.Name);Console.ReadKey();}}}
Explicação do código: -
- Criamos o objeto "stream" para abrir o arquivo Example.txt no modo somente leitura.
- Em seguida, usamos a classe formatter que é usada para desserializar o objeto, que é armazenado no arquivo Example.txt. O objeto retornado é definido como o objeto objnew.
- Finalmente, exibimos as propriedades do objeto "objnew" no console usando as propriedades "ID" e "name".
Quando o código acima for definido e o projeto for executado usando o Visual Studio, você obterá a saída abaixo.
Resultado:-
Você pode ver na saída acima que os valores do arquivo foram desserializados corretamente e exibidos no console.
Resumo
A serialização é usada para gravar objetos de classe em arquivos.
A desserialização é usada para recuperar os objetos do arquivo.