自定格式的配置文件 App.config <?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> <section name="Modules" type="trial.Configuration.ModulesConfiguration, ModulesConfiguration" /> </configSections> <Modules> <ModuleGroup Id = "WorkCenter" Name = "控制中心" Image = "img4.ico" Description = ""> <Module Id = "Navigator" Name = "导航" Image = "modulehome.bmp" Description = ""> <View Assembly = "NavigateUI.exe" Class = "MyNavigateUI.MyNavigateMain"></View> <MainMenu Assembly = "NavigateUI.exe" Class = "MyNavigateUI.MyNavigateMainMenu"></MainMenu> <Toolbar Assembly = "NavigateUI.exe" Class = "MyNavigateUI.Control.MyNavigateToolBar"></Toolbar> <MenuItem MainMenuId = "Navigate" ToolBarButtonId = "Toolbar" File = "Navigator.xml"></MenuItem> </Module> <Module Id = "PSE" Name = "结构器" Image = "module.jpg" Description = ""> <View Assembly = "XYZPse.exe" Class = "XYZPse.MainForm.MainForm"></View> <MainMenu Assembly = "XYZPse.exe" Class = "XYZPse.Menu.PseMenu"></MainMenu> <Toolbar Assembly = "XYZPse.exe" Class = "XYZPse.Menu.PseToolBar"></Toolbar> <MenuItem MainMenuId = "PSEMainMenu" ToolBarButtonId = "Toolbar" File = "XYZPse.xml"></MenuItem> </Module> </ModuleGroup> <ModuleGroup Id = "NXZManager" Name = "统管理" Image = "img4.ico" Description = ""> <Module Id = "StandardTableManager" Name = "标库管理" Image = "modulesTable.bmp" Description = ""> <View Assembly = "StandardTableManager.WinUI.exe" Class = "WinUI.StandardTable.StandTableSee"></View> <MainMenu Assembly = "StandardTableManager.WinUI.exe" Class = "WinUI.StandardTable.SystemMenu.Menu"></MainMenu> <Toolbar Assembly = "StandardTableManager.WinUI.exe" Class = "WinUI.StandardTable.SystemMenu.ToolBar"></Toolbar> <MenuItem MainMenuId = "StandardTableMenu" ToolBarButtonId = "Toolbar" File = "StandardTable.xml"></MenuItem> </Module> </ModuleGroup> <ModuleGroup Id = "SystemManager" Name = "系管理" Image = "img4.ico" Description = ""> <Module Id = "WorkflowManager" Name = "流程管理" Image = "module.jpg"> <View Assembly = "WorkFlowUI.exe" Class = "WorkFlow.WinUI.ProcessManage.ProcessManageView"></View> <MainMenu Assembly = "WorkFlowUI.exe" Class = "WorkFlow.WinUI.WorkFlowMainMenu"></MainMenu> <Toolbar Assembly = "WorkFlowUI.exe" Class = "WorkFlow.WinUI.WorkFlowToolBar"></Toolbar> <MenuItem MainMenuId = "WorkFlowManager" ToolBarButtonId = "ToolBar" File = "WorkFlow.xml"></MenuItem> </Module> <Module Id = "Organization" Name = "组织管理" Image = "moduleuserAccount.bmp" Description = ""> <View Assembly = "XYZ.exe" Class = "XYZ.SystemManage.UserGroupRole"></View> <MainMenu Assembly = "XYZ.exe" Class = "XYZ.SystemMenu.OrganizationMenu"></MainMenu> <Toolbar Assembly = "XYZ.exe" Class = "XYZ.SystemMenu.OrganizationToolBar"></Toolbar> <MenuItem MainMenuId = "Organization" ToolBarButtonId = "Toolbar" File = "Organization.xml"></MenuItem> </Module> </ModuleGroup> </Modules></configuration> 自定配置文件节读取类 ModulesConfiguration.cs using System;using System.Xml;namespace trial.Configuration...{ /**//// <summary> /// ModulesConfiguration 的摘要说明。 /// </summary> public class ModulesConfiguration : System.Configuration.IConfigurationSectionHandler ...{ private ModuleGroupConfiguration[] moduleGroups; public ModuleGroupConfiguration[] ModuleGroups ...{ get ...{ return moduleGroups; } } /**//// <summary> /// /// </summary> /// <param name="parent"></param> /// <param name="configContext"></param> /// <param name="section"></param> /// <returns></returns> public object Create(object parent, object configContext, System.Xml.XmlNode section) ...{ XmlNodeList groups = section.SelectNodes("ModuleGroup"); moduleGroups = new ModuleGroupConfiguration[groups.Count]; for (int i=0;i<groups.Count;i++) ...{ moduleGroups[i] = new ModuleGroupConfiguration(groups[i]); } return this; } }} 自定配置节信息读取方法 private void MainForm_Load(object sender, System.EventArgs e) ...{ StringBuilder builder = new StringBuilder(); ModulesConfiguration modules = (ModulesConfiguration)ConfigurationSettings.GetConfig("Modules"); foreach (ModuleGroupConfiguration group in modules.ModuleGroups) ...{ // Group builder.Append(" ModuleGroup: "); builder.Append(group.Id); builder.Append(" "); builder.Append(group.Name); builder.Append(" "); builder.Append(group.Image); builder.Append(" "); builder.Append(group.Description); foreach (ModuleConfiguration module in group.Modules) ...{ // Module builder.Append(" Module: "); builder.Append(module.Id); builder.Append(" "); builder.Append(module.Name); builder.Append(" "); builder.Append(module.Image); builder.Append(" "); builder.Append(module.Description); // View if (module.View != null) ...{ builder.Append(" View: "); builder.Append(module.View.Assembly); builder.Append(" "); builder.Append(module.View.Class); } // MainMenu if (module.MainMenu != null) ...{ builder.Append(" MainMenu: "); builder.Append(module.MainMenu.Assembly); builder.Append(" "); builder.Append(module.MainMenu.Class); } // Toolbar if (module.Toolbar != null) ...{ builder.Append(" Toolbar: "); builder.Append(module.Toolbar.Assembly); builder.Append(" "); builder.Append(module.Toolbar.Class); } // MenuItem if (module.MenuItem != null) ...{ builder.Append(" MenuItem: "); builder.Append(module.MenuItem.MainMenuId); builder.Append(" "); builder.Append(module.MenuItem.ToolBarButtonId); builder.Append(" "); builder.Append(module.MenuItem.File); } } } this.richTextBox1.Text = builder.ToString(); }