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; } }