I am trying to deserialize XDocument to a class that contains an array/list. The problem is this code fails to do so, I always get a Response class without any Inventory items (not null, but count = 0)
Here is my test method:
public void GetObj()
{
var xe = new XElement("Inventory");
var xe2 = new XElement("Id", "23");
xe.Add(xe2);
var list = new List<XElement>();
list.Add(xe);
list.Add(xe);
var doc = new XDocument(new XElement("Response", list));
var obj = doc.Deserialize<Response>();
}
And here are my extension methods and models:
public static class XDocumentExtensions
{
public static T Deserialize<T>(this XDocument doc)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (var reader = doc.Root.CreateReader())
{
return (T)xmlSerializer.Deserialize(reader);
}
}
public static XDocument Serialize<T>(this T value)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
XDocument doc = new XDocument();
using (var writer = doc.CreateWriter())
{
xmlSerializer.Serialize(writer, value);
}
return doc;
}
}
public class Response
{
public List<Inventory> Inventory { get; set; }
}
public class Inventory
{
public int Id { get; set; }
}