Вроде так:
XmlAttributeOverrides or = new XmlAttributeOverrides();
or.Add(typeof(ChannelConfiguration), new XmlAttributes
{
XmlType = new XmlTypeAttribute("Channel")
});
var xmlSerializer = new XmlSerializer(typeof(List<ChannelConfiguration>), or,
Type.EmptyTypes, new XmlRootAttribute("Channels"), "");
xmlSerializer.Serialize(Console.Out,
new List<ChannelConfiguration> { new ChannelConfiguration { } });
Обратите внимание, что необходимо кэшировать и повторно использовать этот экземпляр сериализатора.
Я также скажу, что я настоятельно рекомендую вам использовать подход «класса-оболочки» - проще, нет риска утечки сборки, и IIRC работает на большем количестве платформ (почти наверняка я видел крайний случай, когда вышеописанное ведет себя иначе в некоторых реализациях - SL или WP7 или что-то в этом роде.
Если у вас есть доступ к типу ChannelConfiguration
, вы также можете просто использовать:
[XmlType("Channel")]
public class ChannelConfiguration
{...}
var xmlSerializer = new XmlSerializer(typeof(List<ChannelConfiguration>),
new XmlRootAttribute("Channels"));
xmlSerializer.Serialize(Console.Out,
new List<ChannelConfiguration> { new ChannelConfiguration { } });