Mercurial > pub > ImplabNet
diff Implab/Xml/SerializationHelpers.cs @ 229:5f7a3e1d32b9 v2
JsonXmlReader performance tuning
JsonScanner now operates strings and doesn't
parses number and literals.
Added SerializationHelpers to common serialize/deserialize operations
author | cin |
---|---|
date | Tue, 12 Sep 2017 19:07:42 +0300 |
parents | |
children | 3eaa9372c754 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Implab/Xml/SerializationHelpers.cs Tue Sep 12 19:07:42 2017 +0300 @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Linq; + +namespace Implab.Xml { + public static class SerializationHelpers { + public static string SerializeAsString<T>(T obj) { + return SerializersPool<T>.Instance.SerializeAsString(obj); + } + + public static void Serialize<T>(XmlWriter writer, T obj) { + SerializersPool<T>.Instance.Serialize(writer, obj); + } + + public static XmlDocument SerializeAsXmlDocument<T>(T obj) { + var doc = new XmlDocument(); + using (var writer = doc.CreateNavigator().AppendChild()) { + SerializersPool<T>.Instance.Serialize(writer, obj); + } + return doc; + } + + public static XDocument SerializeAsXDocument<T>(T obj) { + var doc = new XDocument(); + using (var writer = doc.CreateWriter()) { + SerializersPool<T>.Instance.Serialize(writer, obj); + } + return doc; + } + + public static T DeserializeFromString<T>(string data) { + return SerializersPool<T>.Instance.DeserializeFromString(data); + } + + public static T DeserializeFromXmlNode<T>(XmlNode node) { + Safe.ArgumentNotNull(node, nameof(node)); + using (var reader = node.CreateNavigator().ReadSubtree()) + return SerializersPool<T>.Instance.Deserialize(reader); + } + } +}