开发框架提供两个方案加载业务模块
作者:C/S框架网  发布日期:2015-01-05 14:06:01
  开发框架提供两个方案加载业务模块



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

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



上一篇 下一篇