2009-11-25 30 views
2

我反序列化XML到类: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; } 

    } 

我要让类更优雅,
是否让ToolBars类扩展List是一个好主意?
如果是,我该如何修改xml文件和xml属性?

+0

你是什么意思_更优雅_? – 2009-11-25 15:55:00

+0

我不喜欢toolBar类只有一个属性的工具栏集合。也许最好延长收藏? – samuel 2009-11-25 16:26:27

回答

1

它有什么害处?

就我个人而言,我会保持原样;它做它所说的,并且很容易理解。对我来说,这是优雅的。您也可以稍后在顶层添加属性(如果它是本身列表,则不能这样做)。