Serialização de C # & Desserialização com Exemplo

Anonim

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

  1. Crie uma classe chamada Tutorial que tem 2 propriedades, a saber ID e Nome
  2. Em seguida, criaremos um objeto da classe e atribuiremos um valor "1" à propriedade ID e um valor ".Net" à propriedade name.
  3. Em seguida, usaremos a serialização para serializar o objeto acima em um arquivo chamado Example.txt
  4. 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: -

  1. 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.
  2. 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: -

  1. Primeiro, criamos um objeto da classe Tutorial. Em seguida, atribuímos o valor de "1" a ID e ".net" à propriedade de nome.
  2. 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.
  3. 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: -

  1. Criamos o objeto "stream" para abrir o arquivo Example.txt no modo somente leitura.
  2. 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.
  3. 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.