开发框架提供两个方案加载业务模块

  开发框架提供两个方案加载业务模块

开发框架提供两个方案加载业务模块



开发框架提供两个方案加载业务模块:

1.从帐套库的sys_ModuleFileList表获取模块文件清单表


C# Code:

DataTable fileList = CommonData.GetDataDict("sys_ModuleFileList");
_Modules = loader.GetModuleList(fileList);//从运行目录中搜索模块文件

//来源:C/S框架网(www.csframework.com) QQ:1980854898


2.枚举程序目录下所有DLL文件


C# Code:

//2.枚举程序目录下所有DLL文件
_Modules = loader.GetModuleList("CSFramework*.DLL");

//来源:C/S框架网(www.csframework.com) QQ:1980854898






如何更新?

1. 打开ModuleLoader.cs文件,增加下面两个方法。
2. 打开ModuleManager.cs文件,修改LoadModules()方法。
贴图图片





方案2的源码:


C# Code:


/// <summary>
/// 枚举程序目录,获取模块列表,转换为ModuleInfo集合.
/// </summary>
/// <param name="searchPattern">查找的文件</param>
/// <returns></returns>
public virtual IList<ModuleInfo> GetModuleList(string searchPattern)
{
   try
   {
      string[] files = null; //模块文件(*.dll)
      IList<ModuleInfo> list = new List<ModuleInfo>();
      
      if (Directory.Exists(MODULE_PATH))
      files = Directory.GetFiles(MODULE_PATH, searchPattern);
      
      foreach (string mod in files)
      {
         Assembly asm = null;
         try
         {
            //加载.Net Framework DLL文件
            asm = Assembly.LoadFile(mod);
         }
         catch { continue; }
         
         ModuleID id = GetModuleID(asm);
         string name = GetCurrentModuleName();
         if (id != ModuleID.None)
         {
            ModuleInfo m = new ModuleInfo(asm, id, name, mod);
            list.Add(m);
         }
      }
      
      SortModule(list); //模块排序.
      
      return list;
   }
   catch (Exception ex)
   {
      Msg.ShowException(ex);
      return null;
   }
}

/// <summary>
/// 模块排序
/// </summary>
/// <param name="list"></param>
public virtual void SortModule(IList<ModuleInfo> list)
{
   int i = 0, j = 1;
   ModuleInfo temp;
   bool done = false;
   while ((j < list.Count) && (!done))
   {
      done = true;
      for (i = 0; i < list.Count - j; i )
      {
         if ((list[i] as ModuleInfo).ModuleID > (list[i 1] as ModuleInfo).ModuleID)
         {
            done = false;
            temp = list[i];
            list[i] = list[i 1];
            list[i 1] = temp;
         }
      }
   }
}

//来源:C/S框架网(www.csframework.com) QQ:1980854898




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


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

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

开发框架提供方案业务模块
CS开发框架核心模型 - 动态模块
动态模块是什么意思? 能做到业务模块完全独立吗?
CS开发框架动态模块技术
CS开发框架新增报表模块 (源码下载)
CS开发框架 新增加报表模块(报表模板)
CSFramework.ClientFoundation与ClientDemo解决方案区别与用途
Winform软件快速开发平台 - 关于数据权限,表格列权限控制种解决方案
报表模板文件
代码生成器用户表和视图报错解决方案|C/S框架
新增模块没有 | 左侧的导航菜单栏没显示
C#.NET快速开发框架平台基于DevExpress表格大数据性能测试报告
关于使用VS2010新建了模块无法的问题
系统登录提示账套数据失败,无法选择账套主要原因与解决方案
C# Winform 开发框架 - 业务单据附件管理解决方案(原)
C#.Net CS快速开发框架- 新增业务模块(视频下载)
我在框架了新的业务模块,但运行导航位置没有菜单
插件式框架-业务模块管理
代码生成器新添大功能,生成业务模块模块主窗体
主窗体后显示指定模块主窗体