CS开发框架核心模型 - 动态加载模块
CS开发框架核心模型 - 动态加载模块
C/S开发框架核心功能之一:
ModuleLoader是开发框架的一个类,用于动态加载用户设计的业务模块。
模块加载器支持两种方式:
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
/// 加载模块方法
/// </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
扫一扫加微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网