September 27, 2013

ObjectSerializer

I often face the need for an ObjectSerializer; to transform an object into an XML string or vice versa. This can be used in many ways, fx. when storing an object.

I have created a few ObjectSerializers myself and found several on the internet... So far the one below is the best.

internal static class ObjectSerializer<T>
{
 /// <summary>
 /// Serialize an object of type T into a XML string
 /// </summary>
 /// <param name="value">The object to be serialized</param>
 /// <returns>The serialized object of type T</returns>
 public static string ToXml(T value)
 {
  XmlSerializer serializer = new XmlSerializer(typeof(T));
  StringBuilder stringBuilder = new StringBuilder();
  XmlWriterSettings settings = new XmlWriterSettings()
  {
   Indent = true,
   OmitXmlDeclaration = true,
  };
 
  using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder, settings))
  {
   serializer.Serialize(xmlWriter, value);
  }
 
  return stringBuilder.ToString();
 }
 
 /// <summary>
 /// Deserialize a XML string into a object of type T
 /// </summary>
 /// <param name="xml">The XML as a string to be deserialized</param>
 /// <returns>The deserialized object of type T</returns>
 public static T FromXml(string xml)
 {
  XmlSerializer serializer = new XmlSerializer(typeof(T));
 
  // Create a new instance of T
  T value;
 
  using (StringReader stringReader = new StringReader(xml))
  {
   object deserialized = serializer.Deserialize(stringReader);
   value = (T)deserialized;
  }
 
  return value;
 }
}

No comments:

Post a Comment