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


开发框架提供两个方案加载业务模块:
1.从帐套库的sys_ModuleFileList表获取模块文件清单表
C# Code:
DataTable fileList = CommonData.GetDataDict("sys_ModuleFileList");
_Modules = loader.GetModuleList(fileList);//从运行目录中搜索模块文件
//来源:C/S框架网(www.csframework.com) QQ:1980854898
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
//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
/// <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

扫一扫加作者微信


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