У меня есть XML, который выглядит примерно такКак десериализации различных XML-тегов в один список
<root>
<bosses>
<boss>..some elements..</boss>
<boss>..some elements..</boss>
</bosses>
<workers>
<worker>..some elements..not the same as bosses</worker>
<worker>..some elements..</worker>
</workers>
</root>
и несколько классов, которые выглядят что-то вроде этого
public class Person
{
//properties common to both bosses and workers
}
public class Boss : Person
{
//some properties unique for bosses
}
public class Worker : Person
{
//some properties unique for workers
}
Теперь, что я бы Например, десериализуйте xml в один List<Person>
, но, честно говоря, я не понимаю, как это сделать.
я могу получить отдельные списки для хозяев и рабочих, делая
[XmlElement("bosses")]
public List<Boss> Bosses { get; set; }
[XmlElement("workers")]
public List<Worker> Workers { get; set; }
Я попытался объединить их наивности, делая это
[XmlElement("bosses")]
[XmlElement("workers")]
public List<Person> People { get; set; }
но терпит неудачу. Если бы мне пришлось угадать, я бы сказал, что я должен сказать dezerializer, какой подкласс Person
использовать с боссами и который использовать с рабочими, но даже если это так, я не могу найти, как это делается.
Итак, пожалуйста, просветите меня!
EDIT (solution): Что вы знаете, задавая вопрос, вызвали некоторые новые мысли, и я смог найти решение. Я отправлю его здесь, в случае, если кто-то будет искать с подобными проблемами:
[XmlElement(ElementName = "bosses", Type = typeof(Boss))]
[XmlElement(ElementName = "workers", Type = typeof(Worker))]
public List<Person> People { get; set; }
Посмотрите на '' XmlArray' и XmlArrayItem' атрибуты –
Быстрый способ это сделать новый список людей и добавить оба списка к этому – Sayse
Пожалуйста, разместите свое решение в качестве ответа на свой вопрос и примите его. –