C# 将XML反序列化为扩展集合的类

C# 将XML反序列化为扩展集合的类,c#,xml,serialization,C#,Xml,Serialization,我将XML反序列化为类: 我的XML文件: <?xml version="1.0" encoding="utf-8" ?> <ToolBarConfiguration> <ToolBars> <ToolBarSet id="1" buttonsCounter="4" width="252"> <ToolBarItems> <ToolBarItem id="1" Command="Comman

我将XML反序列化为类:

我的XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<ToolBarConfiguration>
  <ToolBars>
    <ToolBarSet id="1" buttonsCounter="4" width="252">
      <ToolBarItems>
        <ToolBarItem id="1" Command="Command11" Icon="pic11" Icon2="pic11" Enabled="true" Visible="true" Type="Button"/>
        <ToolBarItem id="2" Command="Command12" Icon="pic12" Enabled="true" Visible="true" Type="Button"/>
        <ToolBarItem id="3" Command="Command13" Icon="pic13" Enabled="true" Visible="true" Type="Button"/>
        <ToolBarItem id="4" Command="Command14" Icon="pic14" Enabled="false" Visible="true" Type="Button"/>
      </ToolBarItems>
    </ToolBarSet>
    <ToolBarSet id="2" buttonsCounter="2"  width="170">
      <ToolBarItems>
        <ToolBarItem id="1" Command="Command21" Icon="pic11" Enabled="true" Visible="true" Type="ButtonWithSelector"/>
        <ToolBarItem id="2" Command="Command22" Icon="pic22" Enabled="true" Visible="true" Type="Button"/>
      </ToolBarItems>
    </ToolBarSet>
  </ToolBars>
</ToolBarConfiguration>

我的班级结构:

 [XmlRoot("ToolBarConfiguration")]
    public class ToolBars
    {
        [XmlArray("ToolBars")]
        [XmlArrayItem("ToolBarSet", typeof(Toolbar))]
        public List<Toolbar> Toolbars
        {
            get { return toolbars; }
            set { toolbars = value; }
        }
        List<Toolbar> toolbars = new List<Toolbar>();
    }
 public class Toolbar
    {
        [XmlAttribute("id")]
        public int Id { get; set; }
        [XmlAttribute("buttonsCounter")]
        public int ButtonsCounter { get; set; }
        [XmlAttribute("width")]
        public int Width { get; set; }

        [XmlArray("ToolBarItems")]
        [XmlArrayItem("ToolBarItem", typeof(ToolbarItem))]
        public List<ToolbarItem> ToolbarItems
        {
            get { return toolbarItems; }
            set { toolbarItems = value; }
        }
        List<ToolbarItem> toolbarItems = new List<ToolbarItem>();

    }

public class ToolbarItem
    {
        [XmlAttribute("Command")]
        public string Command { get; set; }

        [XmlAttribute("id")]
        public int Id { get; set; }

        [XmlAttribute("Icon")]
        public string Icon { get; set; }

        [XmlAttribute("Icon2")]
        public string Icon2 { get; set; }

        [XmlAttribute("Visible")]
        public bool Visible { get; set; }

        [XmlAttribute("Enabled")]
        public bool Enabled { get; set; }

        [XmlAttribute("Type")]
        public ToolbarItemType ItemType { get; set; }

    }
[XmlRoot(“工具栏配置”)]
公共类工具栏
{
[XmlArray(“工具栏”)]
[XmlArrayItem(“工具栏集”,类型(工具栏))]
公共列表工具栏
{
获取{返回工具栏;}
设置{toolbars=value;}
}
列表工具栏=新建列表();
}
公共类工具栏
{
[XmlAttribute(“id”)]
公共int Id{get;set;}
[XmlAttribute(“按钮计数器”)]
公共int按钮计数器{get;set;}
[XmlAttribute(“宽度”)]
公共整数宽度{get;set;}
[XmlArray(“工具栏项”)]
[XmlArrayItem(“ToolBarItem”,typeof(ToolBarItem))]
公共工具栏项目列表
{
获取{返回工具栏项;}
设置{toolbarItems=value;}
}
列表工具栏项=新列表();
}
公共类工具栏项
{
[XmlAttribute(“命令”)]
公共字符串命令{get;set;}
[XmlAttribute(“id”)]
公共int Id{get;set;}
[XmlAttribute(“图标”)]
公共字符串图标{get;set;}
[XmlAttribute(“Icon2”)]
公共字符串Icon2{get;set;}
[XmlAttribute(“可见”)]
公共布尔可见{get;set;}
[XmlAttribute(“已启用”)]
已启用公共bool的{get;set;}
[XmlAttribute(“类型”)]
公共工具栏ItemType ItemType{get;set;}
}
我想让课堂更优雅,
让工具栏类扩展列表是个好主意吗?

如果是,我需要如何修改xml文件和xml属性?

这有什么害处


就我个人而言,我会保持现状;它言行一致,简单易懂。对我来说,这是优雅的。您也可以稍后在顶层添加属性(如果它本身是一个列表,则无法执行此操作)。

更优雅是什么意思?我不喜欢工具栏类只有一个工具栏集合属性。也许扩大收藏范围更好?