From 12ee533cbbefee348910dee3a5d41f07eb8a8683 Mon Sep 17 00:00:00 2001 From: Chris Cameron Date: Sun, 9 Sep 2018 20:33:56 -0400 Subject: [PATCH] feat: Shims for deserializing XML to object instance --- ICD.Common.Utils/Xml/IcdXmlConvert.cs | 39 ++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/ICD.Common.Utils/Xml/IcdXmlConvert.cs b/ICD.Common.Utils/Xml/IcdXmlConvert.cs index 08eed47..eda85b7 100644 --- a/ICD.Common.Utils/Xml/IcdXmlConvert.cs +++ b/ICD.Common.Utils/Xml/IcdXmlConvert.cs @@ -41,7 +41,7 @@ namespace ICD.Common.Utils.Xml /// /// /// - public static object DeserializeObject(string xml) + public static T DeserializeObject(string xml) { return (T)DeserializeObject(typeof(T), xml); } @@ -57,10 +57,41 @@ namespace ICD.Common.Utils.Xml if (type == null) throw new ArgumentNullException("type"); - IXmlConverter converter = XmlConverterAttribute.GetConverterForInstance(type); - using (IcdXmlReader reader = new IcdXmlReader(xml)) - return converter.ReadXml(reader); + return DeserializeObject(type, reader); + } + + /// + /// Deserializes the current node to an instance of the given type. + /// + /// + /// + /// + public static T DeserializeObject(IcdXmlReader reader) + { + if (reader == null) + throw new ArgumentNullException("reader"); + + return (T)DeserializeObject(typeof(T), reader); + } + + /// + /// Deserializes the current node to an instance of the given type. + /// + /// + /// + /// + public static object DeserializeObject(Type type, IcdXmlReader reader) + { + if (type == null) + throw new ArgumentNullException("type"); + + if (reader == null) + throw new ArgumentNullException("reader"); + + IXmlConverter converter = XmlConverterAttribute.GetConverterForType(type); + + return converter.ReadXml(reader); } public static string ToString(int value)