【发布时间】:2012-01-03 16:30:05
【问题描述】:
我需要序列化 IEnumerable。同时我希望根节点是“Channels”和第二级节点 - Channel(而不是 ChannelConfiguration)。
这是我的序列化程序定义:
_xmlSerializer = new XmlSerializer(typeof(List<ChannelConfiguration>), new XmlRootAttribute("Channels"));
我通过提供 XmlRootAttribute 覆盖了根节点,但我没有找到将 Channel 而不是 ChannelConfiguration 设置为二级节点的选项。
我知道我可以通过为 IEnumerable 引入包装器并使用 XmlArrayItem 来做到这一点,但我不想这样做。
【问题讨论】:
-
你为什么不想做简单的选择?出于好奇? (另请注意:使用非平凡构造函数意味着您必须缓存序列化程序,否则会泄漏程序集;基本的
XmlSerializer(Type)构造函数不会受到此影响) -
你是ChannelConfiguration类的所有者,你能用属性装饰它吗?如果是,我可能有一个解决方案。
-
@MarcGravell,也许你是对的,我应该使用包装器
-
@achitaka-san,是的,我是这个类的所有者
标签: c# .net serialization xml-serialization