Simple serialization and deserialization of public class members

Here is a simple generic class that allows you to serialize classes (well, their public members) into XML and deserialize the XML to objects again. Make sure the class (or struct) has a parameterless constructor and that all the members that you want to serialize are public. Here is the code:

public class SimpleSerializer<t>
{
 public String Serialize(T o)
 {
  using(MemoryStream m = new MemoryStream())
  {
   XmlSerializer s = new XmlSerializer(o.GetType());
   s.Serialize(m, o);
   return Encoding.UTF8.GetString(m.ToArray());
  }
 }

 public T Deserialize(String xml)
 {
  using (MemoryStream m = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
  {
   XmlSerializer s = new XmlSerializer(typeof(T));
   return (T)s.Deserialize(m);
  }
 }
}

Here is a simple example of a class that will be serialized:

public struct Person {
  public String firstname;
  public String lastname;

  public Person(String firstname, String lastname) {
    this.firstname = firstname;
    this.lastname = lastname;
  }
}

And finally, a simple console application that demonstrates how it works:

class Program {
  static void Main(string[] args) {
    Person p1 = new Person("Tim", "Van Wassenhove");
    SimpleSerializer<person> ss = new SimpleSerializer<person>();

    String xml = ss.Serialize(p1);
    Console.WriteLine("serialized:\n" + xml);

    Person p2 = ss.Deserialize(xml);
    Console.WriteLine("unserialized name: " + p2.firstname);

    Console.WriteLine("Press any key to continue...");
    Console.ReadKey();
  }
}

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>