Я пытаюсь выяснить, как сериализовать следующий класс в XML (определенным образом, см. Ниже):
[XmlRoot("Farm")]
public class Farm
{
[XmlArray]
[XmlArrayItem("Person", typeof(Person))]
[XmlArrayItem("Dog", typeof(Dog))]
public List<Animal> Animals { get; set; }
}
(Предположим, что Dog
и Person
оба получены изAnimal
, и у них обоих есть свойство Name
, которое украшено [XmlAttribute("Name")]
.)
Мне нужно создать этот объект:
var myFarm = new Farm
{
Animals = new List<Animal> {
new Person { Name = "Bob" },
new Dog { Name = "Fido" }
}
};
...и пусть он сериализуется в следующий документ:
<?xml version="1.0"?>
<Farm>
<Person Name="Bob"/>
<Dog Name="Fido"/>
</Farm>
Но, когда я сериализую myFarm
(вывод результатов на консоль), вот так:
var serializer = new XmlSerializer(typeof(Farm));
var namespaces = new XmlSerializerNamespaces();
namespaces.Add("", "");
serializer.Serialize(System.Console.Out, myFarm, namespaces);
... результатэто:
<?xml version="1.0"?>
<Farm>
<Animals>
<Person Name="Bob"/>
<Dog Name="Fido"/>
</Animals>
</Farm>
Обратите внимание на дополнительный нежелательный Animals элемент.Как мне избавиться от этого?Изменение схемы XML не вариант, но изменение кода.Мне бы очень хотелось обойти эту проблему, и я надеюсь, что кто-то знает о легком исправлении (или знает, что не легко это исправить).
Спасибо!