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

questionAnswers(1)

yourAnswerToTheQuestion