У меня есть набор классов, которые я хочу сериализовать в XML файл. Это выглядит примерно так:
public class Foo
{
public List<Bar> BarList { get; set; }
}
Если панель является просто оболочкой для набора свойств, например:
public class Bar
{
public string Property1 { get; set; }
public string Property2 { get; set; }
}
Я хочу отметить это так, чтобы он выводился в файл XML - это будет использоваться как для сохранения, так и для рендеринга настроек через XSLT в удобную для человека форму.
Я хочу получить хорошее представление XML следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<Foo>
<BarList>
<Bar>
<Property1>Value</Property1>
<Property2>Value</Property2>
</Bar>
<Bar>
<Property1>Value</Property1>
<Property2>Value</Property2>
</Bar>
</Barlist>
</Foo>
где все бары в Барлисте выписаны со всеми их свойствами. Я уверен, что мне понадобится разметка для определения класса, чтобы он работал, но я не могу найти правильную комбинацию.
Я отметил Foo атрибутом
[XmlRoot("Foo")]
и list<Bar>
с атрибутом
[XmlArray("BarList"), XmlArrayItem(typeof(Bar), ElementName="Bar")]
пытаясь рассказать Сериализатору, что я хочу. Однако это не работает, и я просто получаю пустой тег, выглядящий следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<Foo>
<Barlist />
</Foo>
Я не уверен, что тот факт, что я использую автоматические свойства, должен иметь какой-либо эффект, или если использование дженериков требует какой-либо специальной обработки. Я получил это, чтобы работать с более простыми типами, такими как список строк, но список классов до сих пор ускользает от меня.