自定格式的配置文件 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(); }