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