插件相信大家都知道,它的应用相当广泛。那我们自己在开发应用系统时能否也借鉴插件的一种方法来实现程序版本的升级与某一部分功能模块的更新呢?比如说用户的某些业务更改啦,这时我们就需要对这一更改的业务进行重组,以前一般是把业务逻辑重写并重新编译全部源程序再发布。如果采用插件的方法来实现,我们只需要把新的业务逻辑重新编译发布成DLL文件,利用框架的功能来实现动态加载业务逻辑。
.net平台中其实实现插件的关键技术点就是动态加载动态链接库(DLL),即Assembly类的应用。这里大致介绍下把新增的模块作为插件的形式发布的实现思路如下:
一、把新实现或新增的功能模块发布成DLL文件;
二、通过XML或数据库配置相关信息,包括命名空间、类名、链接库文件名、启动方法名(默认为类名)三个参数;
三、基础框架程序通过读取的三个参数利用Assembly.LoadFrom(文件名)函数加载动态链接库;
四、根据类名和启动方法名实例化类、调用启动方法;
下面给出一个简单的实现源代码:
Try { // 载入程序集
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
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15232277/viewspace-504495/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15232277/viewspace-504495/