У меня есть такой класс:
public class Level
{
[XmlAttribute]
public string Guid { get; set; }
}
public class LevelList : List<Level>
{
}
public class Test
{
public LevelList CalLevelList { get; set; }
}
Используя XmlSerializer, я получаю вывод примерно так:
<CalLevelList>
<Level Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/>
<Level Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/>
</CalLevelList>
Что технически правильно. Однако, не меняя имен классов, я бы хотел, чтобы вывод выглядел так:
<Levels>
<L Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/>
<L Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/>
</Levels>
Я знаю, что это можно сделать с помощью атрибутов, но не могу понять, как. Когда я добавляю атрибут в класс Test следующим образом:
public class Test
{
[XmlElement("Levels")]
public LevelList CalLevelList { get; set; }
}
вывод довольно удивителен:
<Levels Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/>
<Levels Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/>
Это значит, что я потерял родительский узел. Указанное мной имя элемента становится именем узла. Почему это? как заставить это работать?