应用框架的设计与实现——.NET平台(6 自定配置文件节读取类)


自定格式的配置文件 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();
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值