feat: Shims for deserializing XML to object instance

This commit is contained in:
Chris Cameron
2018-09-09 20:33:56 -04:00
parent 2ae8fa9c2d
commit 12ee533cbb

View File

@@ -41,7 +41,7 @@ namespace ICD.Common.Utils.Xml
/// <typeparam name="T"></typeparam> /// <typeparam name="T"></typeparam>
/// <param name="xml"></param> /// <param name="xml"></param>
/// <returns></returns> /// <returns></returns>
public static object DeserializeObject<T>(string xml) public static T DeserializeObject<T>(string xml)
{ {
return (T)DeserializeObject(typeof(T), xml); return (T)DeserializeObject(typeof(T), xml);
} }
@@ -57,10 +57,41 @@ namespace ICD.Common.Utils.Xml
if (type == null) if (type == null)
throw new ArgumentNullException("type"); throw new ArgumentNullException("type");
IXmlConverter converter = XmlConverterAttribute.GetConverterForInstance(type);
using (IcdXmlReader reader = new IcdXmlReader(xml)) using (IcdXmlReader reader = new IcdXmlReader(xml))
return converter.ReadXml(reader); return DeserializeObject(type, reader);
}
/// <summary>
/// Deserializes the current node to an instance of the given type.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="reader"></param>
/// <returns></returns>
public static T DeserializeObject<T>(IcdXmlReader reader)
{
if (reader == null)
throw new ArgumentNullException("reader");
return (T)DeserializeObject(typeof(T), reader);
}
/// <summary>
/// Deserializes the current node to an instance of the given type.
/// </summary>
/// <param name="type"></param>
/// <param name="reader"></param>
/// <returns></returns>
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) public static string ToString(int value)