My Blog

Serializzare oggetti a stringa in .NET

by lupok on venerdì 7 dicembre 2012 17:32

La serializzazione e deserializzazione di oggetti .NET in formato stringa è veramente semplice, in aiuto ci viene il namespace System.Xml.Serializarion all'interno del quale è presente la classe XmlSerializer che permette di convertire una classe in uno stream.

A scopo di esempio definiamo una classe con qualche proprietà:

   public class MyClass
   {
 
      public MyClass()
      {
 
      }
 
      public String Prop1 { getset; }
      
      public Int32 Prop2 { getset; }
      
      public Boolean Prop3 { getset; }
   }

Quindi attraverso le due funzioni riportate di seguito possiamo serializzare e deserializzare oggetti di qualsiasi tipo in quanto mediante l'aiuto dei Generics possiamo rimandare la definizione del tipo da serializzare al momento in cui la funzione sarà invocata:

      public static string SerializeToString(T obj)
      {
         XmlSerializer serializer = new XmlSerializer(typeof(T));
 
         using (System.IO.StringWriter writer = new System.IO.StringWriter())
         {
            serializer.Serialize(writer, obj);
 
            return writer.ToString();
         }
      }
 
      public static T DeserializeFromString(String stream)
      {
         XmlSerializer serializer = new XmlSerializer(typeof(T));
 
         using (System.IO.StringReader reader = new System.IO.StringReader(stream))
         {
            return (T)serializer.Deserialize(reader);
         }
      }

Le due funzioni di serializzazione non meritano grossi commenti data la loro semplicità, possiamo dire che la prima mediante XmlSerializer converte la classe in uno stream quindi lo StringWriter converte lo stream in stringa, operazioni invertite per la seconda funzione che da stringa ritorna l'oggetto voluto:

      static void Main(string[] args)
      {
         MyClass mySorceClass = new MyClass() { Prop1 = "ciccio", Prop2 = 2345, Prop3 = true };
 
         String serialization = SerializeToString<MyClass>(mySorceClass);
 
 
         MyClass myDestinationClass = DeserializeFromString<MyClass>(serialization);
 
      }

TestObjectSerializationWithXmlSerializer.zip
		

Blogs Parent Separator My Blog
Author
lupok

My Blog

Tags