1
我有XML,看起來像這個樣子如何反序列化不同的XML標籤到一個列表
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
}
現在這個
<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>
和幾個班,我會喜歡做的是將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
的哪個子類用於老闆,哪些與工人一起使用,但即使如此,我似乎也不知道如何完成。
所以,請賜教!
編輯(解決方案):你知道什麼,問這個問題引發了一些新的想法,我能夠找出解決方案。我將它張貼在這裏,以防別人來尋找類似問題:
[XmlElement(ElementName = "bosses", Type = typeof(Boss))]
[XmlElement(ElementName = "workers", Type = typeof(Worker))]
public List<Person> People { get; set; }
在'XmlArray'看一看,'XmlArrayItem'屬性 – 2013-05-02 18:40:53
快速的方法是使一個新的人名單,並將這兩個名單添加到此 – Sayse 2013-05-02 18:41:29
請發佈您的解決方案作爲您的問題的答案,並接受它。 – 2013-05-02 19:09:46