using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.IO; using System.Xml.Serialization; using System.Xml; namespace FestoDebugger.Service { public class CustomXmlSerializer { static public void Serialize(T t, string fileName) { XmlWriterSettings xmlWriterSettings = new XmlWriterSettings(); xmlWriterSettings.Indent = true; using (FileStream fileWriter = new FileStream(fileName, FileMode.Create)) using (XmlWriter writer = XmlTextWriter.Create(fileWriter, xmlWriterSettings)) { XmlSerializer serializer = new XmlSerializer(t.GetType()); serializer.Serialize(writer, t); writer.Flush(); } } static public string Serialize(T t) { StringBuilder buffer = new StringBuilder(); using (StringWriter writer = new StringWriter(buffer)) { XmlSerializer serializer = new XmlSerializer(typeof(T)); serializer.Serialize(writer, t); } return buffer.ToString(); } static public T Deserialize(string xmlString) { if (string.IsNullOrWhiteSpace(xmlString)) throw new ArgumentNullException("xmlString"); using (StringReader reader = new StringReader(xmlString)) { XmlSerializer serializer = new XmlSerializer(typeof(T)); return (T)serializer.Deserialize(reader); } } static public T Deserialize(Stream streamReader) { if (streamReader == null) throw new ArgumentNullException("streamReader"); if (streamReader.Length <= 0) throw new EndOfStreamException("The stream is blank"); using (XmlReader reader = XmlTextReader.Create(streamReader)) { XmlSerializer deserializer = new XmlSerializer(typeof(T)); return (T)deserializer.Deserialize(reader); } } static public T Deserialize(FileInfo fi) { if (fi == null) throw new ArgumentNullException("fi"); if (!fi.Exists) throw new FileNotFoundException(fi.FullName); using (FileStream fileReader = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read)) return Deserialize(fileReader); } } }