Я пытаюсь десериализовать следующий XML-документ:
<?xml version="1.0" encoding="utf-8" ?>
<TestPrice>
<Price>
<A>A</A>
<B>B</B>
<C>C</C>
<Intervals>
<Interval>
<A>A</A>
<B>B</B>
<C>C</C>
</Interval>
<Interval>
<A>A</A>
<B>B</B>
<C>C</C>
</Interval>
</Intervals>
</Price>
</TestPrice>
И у меня есть три класса для десериализации этого в граф объектов:
public class TestPrice
{
private List<Price> _prices = new List<Price>();
public List<Price> Price
{
get { return _prices; }
set { _prices = value; }
}
}
public class Price
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
private List<Interval> _intervals = new List<Interval>();
public List<Interval> Intervals
{
get { return _intervals; }
set { _intervals = value; }
}
}
public class Interval
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
}
Я могу десериализовать каждую часть хорошо. То есть я могу сделать:
var serializer = new XmlSerializer(typeof(Price));
var priceEntity = ((Price)(serializer.Deserialize(XmlReader.Create(stringReader))));
И priceEntity
правильно инициализируются с данными XML, содержащимися в stringReader
, включая List<Interval> Intervals
. Однако если я попытаюсь десериализовать экземпляр TestPrice
, он всегда будет содержать пустой List<Price> Price
.
Если я изменю определение TestPrice
следующим образом:
public class TestPrice
{
public Price Price { get; set; }
}
Работает. но, конечно, мой XSD определяет цену как последовательность. У меня есть другие десериализованные объекты, но они не включают последовательности в корневой элемент. Есть ли ограничение, о котором я не знаю? Стоит ли включать какие-то метаданные в TestPrice
?