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