Wie überschreibe ich den XML-Elementnamen für Auflistungselemente mit XmlAttributeOverrides?

Ich habe ein sehr einfaches Objekt-Objektmodell, das von System.Xml.XmlSerialization serialisiert wird. Ich muss die XmlAttributeOverrides-Funktionalität verwenden, um die XML-Elementnamen für eine Auflistung von untergeordneten Elementen festzulegen.

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

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

mit dem standard xml serializer würde dies wie folgt aussehen

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

Ich muss die XmlOverrideAttributes verwenden, um dies zu sagen

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

aber ich kann nicht scheinen, es zu veranlassen, die Kindelemente in der Sammlung umzubenennen ... ich kann die Sammlung selbst umbenennen ... ich kann den Stamm umbenennen ... nicht sicher, was ich falsch mache.

Hier ist der Code, den ich gerade habe:

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();

aber das ändert den Namen des Elements überhaupt nicht ... was mache ich falsch?

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage