CS开发框架核心模型 - 动态加载模块
作者:C/S框架网  发布日期:2011/05/11 22:57:28
  CS开发框架核心模型 - 动态加载模块


CS开发框架核心模型 - 动态加载模块


C/S开发框架核心功能之一:


动态加载模块, 所有业务模块完全独立的,框架动态加载而不是静态引用。


模型图如下:

 


模块加载器(ModuleLoader)


ModuleLoader是开发框架的一个类,用于动态加载用户设计的业务模块。

模块加载器支持两种方式:

1. 枚举应用程序目录下所有CSFramework*.DLL文件,将功能集成到主窗体。

2. 根据业务模块配置表(sys_ModuleFiles),动态加载DLL,将功能集成到主窗体。




C# Code:

/// <summary>
/// 加载模块方法
/// </summary>
/// <param name="msg">加载进度</param>
/// <param name="moduleMenus">模块的菜单</param>
public void LoadModules(IMsg msg, MenuStrip moduleMenus, string searchPattern = "")
{
  
  
//加载Dev组件
  
ModuleLoadDevComponent loader = new ModuleLoadDevComponent();
  
  
//****************************************************************
  
//开发框架提供两个方案加载业务模块:
  
//
  
//1.从帐套库的sys_ModuleFileList表获取模块文件清单表
  
//2.枚举程序目录下所有DLL文件
  
//****************************************************************
  

  
if (SystemSettings.Current.ModuleLoadType == ModuleLoadType.ByModuleFileTable)
  {
    
//1.从帐套库的sys_ModuleFileList表获取模块文件清单表
    
DataTable fileList = CommonData.GetDataDict(sys_ModuleFileList.__TableName);
    _Modules
= loader.GetModuleList(fileList);//从运行目录中搜索模块文件
    
}
    
    
if (SystemSettings.Current.ModuleLoadType == ModuleLoadType.SearchAppDir)
    {
      
if (String.IsNullOrWhiteSpace(searchPattern)) searchPattern = Globals.DEF_SYS_MODULE;
      
      
//2.枚举程序目录下所有DLL文件
      
_Modules = loader.GetModuleList(searchPattern);
    }
    
    
if (_Modules == null) throw new CustomException("获取模块清单文件失败!");
    
    
//省略代码
    

  }
  
  
//来源:C/S框架网 | www.csframework.com | QQ:23404761





C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


上一篇 下一篇