Como usar o XmlElementAttribute para a lista <T>?
Tenho uma classe como esta:
public class Level
{
[XmlAttribute]
public string Guid { get; set; }
}
public class LevelList : List<Level>
{
}
public class Test
{
public LevelList CalLevelList { get; set; }
}
Usando o XmlSerializer, recebo a saída assim:
<CalLevelList>
<Level Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/>
<Level Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/>
</CalLevelList>
Qual é tecnicamente correto. No entanto, sem alterar os nomes das classes, eu gostaria que a saída fosse assim:
<Levels>
<L Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/>
<L Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/>
</Levels>
Eu sei que isso poderia ser feito através de atributos, mas não conseguia descobrir como. Quando adiciono um atributo à classe Test assim:
public class Test
{
[XmlElement("Levels")]
public LevelList CalLevelList { get; set; }
}
a saída é bastante surpreendente:
<Levels Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/>
<Levels Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/>
Isso significa que perdi o nó pai. O nome do elemento que eu especifiquei se torna um nome de nó. Porque isso? Como fazer dar certo