插件相信大家都知道,它的應用相當廣泛。那我們自己在開發應用系統時能否也借鑑插件的一種方法來實現程序版本的升級與某一部分功能模塊的更新呢?比如說用戶的某些業務更改啦,這時我們就需要對這一更改的業務進行重組,以前一般是把業務邏輯重寫並重新編譯全部源程序再發布。如果採用插件的方法來實現,我們只需要把新的業務邏輯重新編譯發佈成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