Serializando objetos!!!

Publicado: 03/02/2005 em IntoSpaces
Olá pessoal!
Estou codificando muito ultimamente e experimentando muitas técnicas também, quero sempre que possível compartilhar com vocês algumas coisas bem simples de se fazer, mas que facilitam nossa vida!

Hoje tenho um pequeno exemplo de como se usa o Namespace System.Xml.Serialization para serializar um objeto e guardar seu estado no formato XML e depois recuperar as informações com a mesma facilidade

O exemplo é em C#, minha paixão eheheh
Serializando o objeto, vejam:

public void Serialize(string filename,object obj)
{
   XmlSerializer serializer = new XmlSerializer(typeof(object));

   // Criamos um Stream para receber a escrita de nosso objeto mais baixo
   FileStream fs = new FileStream(filename, FileMode.Create);
   TextWriter writer = new StreamWriter(fs, new UTF8Encoding());
  
   // Serializa o seu objeto para o TextWriter.
   serializer.Serialize(writer, obj);
   writer.Close();
}

Um exemplo bem simples onde usamos um TextWriter que recebe a serialização do objeto e cria o arquivo XML com todas as informações de membros e estado atual do objeto.

Deserializando o objeto:

public object Deserialize(string filename)
{
   object obj = null;

   // Novamente usamos a classe XmlSerializer para fazer o processo reverso.
   XmlSerializer serializer = new XmlSerializer(typeof(object));

   // Ao invés do Writer usamos o Reader, para lermos um Stream de nosso objeto serializado
   TextReader reader = new StreamReader(filename, Encoding.UTF8);

     // nossa varíavel recebe o objeto, no caso não ouve nenhum cast.
   obj = serializer.Deserialize(reader);
   reader.Close();
   return obj;
}

Bem simples não? A classe XmlSerializer faz todo o trabalho sujo pra gente pra retornar o estado de nosso objeto armazenado em um arquivo XML.
Os WebServices fazem isso por nós, por isso a versatilidade de troca de mensagens. Para testarem façam o teste de publicar um objeto em um WebService e depois serializar manualmente ele, verá um resultado bastante interessante!

Em minha jornada utilizei isso para dispensar um banco de dados relacional o que daria um trabalho muito grande, e assim consegui manter os dados de minha classe OO de uma forma muito dinâmica.

Espero que gostem!!!

[]’s
Shinji

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s