Como substituir o nome do elemento xml pelos elementos da coleção usando XmlAttributeOverrides?

Eu tenho um modelo de objeto de objeto muito básico que está sendo serializado pelo material System.Xml.XmlSerialization. Preciso usar a funcionalidade XmlAttributeOverrides para definir os nomes dos elementos xml para uma coleção de elementos filhos.

public class Foo{
  public List Bars {get; set; }
}

public class Bar {
  public string Widget {get; set; }
}

usando o serializador xml padrão, isso sairia como

 <Foo>
  <Bars>
    <Bar>...</Bar>
  </Bars>
 </Foo>

Eu preciso usar o XmlOverrideAttributes para fazer isso

 <Foo>
  <Bars>
    <SomethingElse>...</SomethingElse>
  </Bars>
 </Foo>

mas não consigo renomear os elementos filhos na coleção ... posso renomear a coleção em si ... posso renomear a raiz ... não sei o que estou fazendo de errado.

aqui está o código que tenho agora:

XmlAttributeOverrides xOver = new XmlAttributeOverrides();

var bars = new XmlElementAttribute("SomethingElse", typeof(Bar));
var elementNames = new XmlAttributes();
elementNames.XmlElements.Add(bars);
xOver.Add(typeof(List), "Bars", elementNames);

StringBuilder stringBuilder = new StringBuilder();
StringWriter writer = new StringWriter(stringBuilder);
XmlSerializer serializer = new XmlSerializer(typeof(Foo), xOver);
serializer.Serialize(writer, someFooInstance);

string xml = stringBuilder.ToString();

mas isso não muda o nome do elemento ... o que estou fazendo de errado?

obrigado

questionAnswers(2)

yourAnswerToTheQuestion