У меня есть очень базовая объектная модель объекта, которая сериализуется с помощью System.Xml.XmlSerialization. Мне нужно использовать функциональность XmlAttributeOverrides, чтобы установить имена элементов xml для коллекции дочерних элементов.
public class Foo{
public List Bars {get; set; }
}
public class Bar {
public string Widget {get; set; }
}
с использованием стандартного сериализатора xml, это будет выглядеть как
<Foo>
<Bars>
<Bar>...</Bar>
</Bars>
</Foo>
Мне нужно использовать атрибуты XmlOverrideAttributes, чтобы это сказать
<Foo>
<Bars>
<SomethingElse>...</SomethingElse>
</Bars>
</Foo>
но я не могу заставить его переименовать дочерние элементы в коллекции ... я могу переименовать саму коллекцию ... я могу переименовать корень ... не уверен, что делаю неправильно. 1010 *
вот код, который у меня сейчас есть:
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();
но это никак не меняет название элемента ... что я делаю не так?
спасибо