segunda-feira, 26 de agosto de 2013

Serializar e Deserializar C#

A gravação de arquivos de dados importantes no disco é sempre perigoso. Qualquer usuário pode abrir o arquivo de texto e ler facilmente seus dados. Com a serialização de objetos, você pode reduzir este perigo, em certa medida. Você pode escrever qualquer objeto complexo diretamente para um fluxo de arquivos sem a conversão de valores de propriedades individuais em um texto.
Vou mostrar três exemplos de Serializar (Serialization) sendo eles em XML, Binario e SOAP (que se refere no padrão de mercado hoje) .


        public static void Serializar()
        {
            Cliente c = new Cliente();
            c.Codigo = 10;
            c.Nome = "Edgar";
            c.Sobrenome = "Esteves";

            // Soap
            using (FileStream filestream = new FileStream(@"C:Soap.txt", FileMode.OpenOrCreate, FileAccess.Write)) {
                SoapFormatter soap = new SoapFormatter();
                soap.Serialize(filestream, c);
                filestream.Close();
            }

            //Binario
            using (FileStream filestream = new FileStream(@"C:Binary.txt", FileMode.OpenOrCreate, FileAccess.Write)) {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(filestream, c);
                filestream.Close();
            }

            // XML
            using (FileStream filestream = new FileStream(@"C:Xml.txt", FileMode.OpenOrCreate, FileAccess.Write)) {
                XmlSerializer xml = new XmlSerializer(typeof(Cliente));
                xml.Serialize(filestream, c);
                filestream.Close();
            }
        }

Agora que já temos os arquivos, vamos efetuar o processo ao contrario, conforme classe abaixo:
        public static void Deserializar()
        {
            FileInfo file = new FileInfo(@"C:Binary.txt");

            if (file.Exists)
            {
                FileStream filestream = new FileStream(@"C:Binary.txt", FileMode.Open);
                BinaryFormatter bf = new BinaryFormatter();
                Cliente cliente = (Cliente)bf.Deserialize(filestream);
                filestream.Close();
            }
        }

Bons, estudos.

2 comentários:

  1. muito bom conteúdo. aproveitei parte da rotina para serializar um arquivo xml para ANS

    ResponderExcluir
  2. Muito bom que lhe foi útil! abraços

    ResponderExcluir