XmlSerializer
обычно не чередовать элементы. Вы можете обмануть его, однако, с List<>
и несколько [XmlElement(...)]
указания типа:
class Program
{
static void Main()
{
var root = new MyXmlRoot
{
Items = {
new Bar { },
new Blap { },
new Bar { },
}
};
var ser = new XmlSerializer(typeof(MyXmlRoot));
ser.Serialize(Console.Out, root);
}
}
public abstract class Foo { } // base type used for the list
public class Bar : Foo {
// more props here
}
public class Blap : Foo {
// more props here
}
public class MyXmlRoot
{
private readonly List<Foo> items = new List<Foo>();
[XmlElement("E1WPUO2", typeof(Bar))]
[XmlElement("E1WPUO3", typeof(Blap))]
public List<Foo> Items { get { return items; } }
}
Другие элементы, такие как E1WPU01
не нужно идти в Items
, если нет необходимости чередовать их - они могут перейти непосредственно на MyXmlRoot
(как вы, вероятно, уже имеете).
wow..thanks a bunch Marc, он работает как шарм: D – Erick