基于.net框架下的插件系统的实现方法
2010-07-09 16:51
246 查看
插件相信大家都知道,它的应用相当广泛。那我们自己在开发应用系统时能否也借鉴插件的一种方法来实现程序版本的升级与某一部分功能模块的更新呢?比如说用户的某些业务更改啦,这时我们就需要对这一更改的业务进行重组,以前一般是把业务逻辑重写并重新编译全部源程序再发布。如果采用插件的方法来实现,我们只需要把新的业务逻辑重新编译发布成DLL文件,利用框架的功能来实现动态加载业务逻辑。
.net平台中其实实现插件的关键技术点就是动态加载动态链接库(DLL),即Assembly类的应用。这里大致介绍下把新增的模块作为插件的形式发布的实现思路如下:
一、把新实现或新增的功能模块发布成DLL文件;
二、通过XML或数据库配置相关信息,包括命名空间、类名、链接库文件名、启动方法名(默认为类名)三个参数;
三、基础框架程序通过读取的三个参数利用Assembly.LoadFrom(文件名)函数加载动态链接库;
四、根据类名和启动方法名实例化类、调用启动方法;
下面给出一个简单的实现源代码:
Try { // 载入程序集 KVM 北京纸箱厂 毛刷 网上购物 刷子
Assembly MyAssembly=Assembly.LoadFrom(lpFileName);
Type[] type=MyAssembly.GetTypes();
foreach(Type t in type)
{// 查找要调用的命名空间及类
if(t.Namespace==Namespace&&t.Name==ClassName)
{// 查找要调用的方法并进行调用
MethodInfo m=t.GetMethod(lpProcName);
if(m!=null)
{
object o=Activator.CreateInstance(t);
return m.Invoke(o);
}
else MessageBox.Show(" 装载出错 !");
}
}
}//try
catch(System.NullReferenceException e)
{
MessageBox.Show(e.Message);
}//catch
return (object)0;
}// Invoke
.net平台中其实实现插件的关键技术点就是动态加载动态链接库(DLL),即Assembly类的应用。这里大致介绍下把新增的模块作为插件的形式发布的实现思路如下:
一、把新实现或新增的功能模块发布成DLL文件;
二、通过XML或数据库配置相关信息,包括命名空间、类名、链接库文件名、启动方法名(默认为类名)三个参数;
三、基础框架程序通过读取的三个参数利用Assembly.LoadFrom(文件名)函数加载动态链接库;
四、根据类名和启动方法名实例化类、调用启动方法;
下面给出一个简单的实现源代码:
Try { // 载入程序集 KVM 北京纸箱厂 毛刷 网上购物 刷子
Assembly MyAssembly=Assembly.LoadFrom(lpFileName);
Type[] type=MyAssembly.GetTypes();
foreach(Type t in type)
{// 查找要调用的命名空间及类
if(t.Namespace==Namespace&&t.Name==ClassName)
{// 查找要调用的方法并进行调用
MethodInfo m=t.GetMethod(lpProcName);
if(m!=null)
{
object o=Activator.CreateInstance(t);
return m.Invoke(o);
}
else MessageBox.Show(" 装载出错 !");
}
}
}//try
catch(System.NullReferenceException e)
{
MessageBox.Show(e.Message);
}//catch
return (object)0;
}// Invoke
相关文章推荐
- 基于.net框架下的插件系统的实现方法(补充)
- 基于.net框架下的插件系统的实现方法
- 基于.net框架下的插件系统的实现方法
- 基于.net框架下的插件系统的实现方法(补充)
- 基于AVI的网络视频监控存储系统的实现方法
- 物流系统车辆仓库定位的实现——基于RFID定位的实现方法
- 基于Delphi的三层数据库系统的实现方法
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 基于slimscroll与bootstarp插件实现非常好用应用系统表格展示
- 基于AVI的网络视频监控存储系统的实现方法
- 基于sae实现多人文件管理系统的MantisBT 插件
- 基于报警系统通信数据包的合理构造与正确解析的实现方法
- Oracle VM VirtualBox 在linux系统下安装增强插件实现访问主机的共享文档方法
- 基于GIS、、geosever插件实现当地旅游资源网格化管理系统的架构
- 基于MEF打造的插件系统的实现详解
- JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
- 基于Delphi的三层数据库系统的实现方法
- 基于Delphi的三层数据库系统的实现方法
- 《node.js开发指南》微博系统 4.x版 2016年最新实现方法(基于mysql,使用sequelize)
- 基于Krpano 的全景漫游系统的实现