一个列表中多个对象类型的XmlSerialization

我有一个对象有一个抽象的’aninamls’列表。 即

var animals = new Animals { new Bird{ TailFeatherColour = "Blue" }, new Cat{ Colour = "Brown" } }; 

使用xmlserializer,是否可以将上面的序列化为以下xml,

    Blue   Brown   

目前,我只能得到以下内容:

    Blue   Brown   

当列表是另一个类中的字段时,可以使用XmlElementAttributeXmlArrayItemAttribute属性执行此操作(不同之处在于前者不会在列表元素周围放置容器元素,而后者会这样做)。

我不相信你只需要一个列表即可实现你想要的东西,即当被序列化的实际对象是一个列表时(尽管我可能在这里错了)但是你可以通过在类中嵌套一个列表来伪造它,例如

 [XmlRoot("Animals")] [XmlType("Animals")] public class AnimalsWrapper { [XmlElement(typeof(Bird), ElementName = "Bird")] [XmlElement(typeof(Cat), ElementName = "Cat")] public List Animals; } 

这是一个笨拙的黑客,但会序列化到你想要的。