C 外掛程式式程式開發

2021-05-25 16:13:45 字數 1354 閱讀 2791

c# 外掛程式式程式開發

在網上找了下外掛程式式程式設計的資料,這裡自己先借鑑下別人的,同時發現有自己的看法,不過由於本人水平有限,不一定有參考價值,寫出來一方面是為了總結自己,以求提高,另一方面也希望各為朋友看到我的不足,給我提出寶貴意見。

外掛程式的本質在於不修改程式主體(平台)的情況下對軟體功能進行拓展與加強,當外掛程式的介面公開後,任何公司或個人都可以製作自己的外掛程式來解決一些操作上的不便或增加新功能,也就是真正意義上實現「即插即用」軟體開發。

平台+外掛程式軟體結構是將乙個待開發的目標軟體分為兩部分,一部分為軟體的主體或框架,可定義為平台,這是預先編譯後的程式。另一部分為功能或補充模組,可定義為外掛程式。這個就是後來要進行安裝的外掛程式。

假設你的程式已經部署在使用者的計算機上,並且能夠正常執行了。但是有一天,使用者打來**——他們需要增加新的功能。確定了使用者的需求後,你竟然發現原有的軟體架構已經無法勝任新增任務的需求——你需要重新設計這個應用了!但問題是,就算你又用了乙個開發周期完成了使用者需要的應用,切不能保證使用者的需求不會再次變更。也就是說,需求蔓延的可能性依然存在。因此,這種情況下外掛程式架構更能顯示出它的優越性。

可以這麼說,用它可以帶來方便的地方,而且開發它,也很簡單。而且這樣的主程式根本就不需要改動。需要外掛程式時,拿來就能用,外掛程式更新時,也只需更新這個外掛程式即可。

從程式開發這角度,一般是先開發主程式,決定哪些功能由主程式來完成,然後再建立介面,申明介面的內容,這些內容決定著外掛程式功能的擴充套件,及方向的。這些都是有主程式開發者預先準備好的。外掛程式開發者,從主程式開發者那裡得到介面的內容,並書寫繼承這些介面的類,來完成具體的功能。

下面來寫個例子,這個例子沒實際意義,純屬學習思想。例子是網上的經過自己改造的,發現別人某些地方不合理。

首先,新建乙個類庫,裡面定義介面,這裡定義兩個方法,乙個有返回值的,乙個無返回值的。

將上面的類庫生成imsg.dll,新建乙個類庫myplugin1,新增剛出的引用,分別新建兩個類來實現imsg中定義的介面。

將上面的都生成dll,生成目錄可以設定為新建exe工程的bin目錄plugins資料夾下。plugins資料夾是新建的,專門存放外掛程式的。 新建乙個winform專案,來使用剛才的外掛程式.

執行結果:

),可供大家討論。

原文有 這樣的一段:

if (itemstr == "myconsole")

else if (itemstr == "mydlg")

//呼叫儲存在動態陣列plugins裡面的外掛程式物件的onshowdlg方法

我認為既然是外掛程式,就應該是動態載入的,客戶端肯定不能判斷itemstr,因為實現介面的類是不可預料的,因此主程式不應該新增對imsg的引用,也不應該在客戶端例項化外掛程式物件,因為外掛程式開發的初衷

2011-6-2

楊盛超

C 外掛程式式程式開發

什麼是外掛程式式程式設計 外掛程式的本質在於不修改程式主體 平台 的情況下對軟體功能進行拓展與加強,當外掛程式的介面公開後,任何公司或個人都可以製作自己的外掛程式來解決一些操作上的不便或增加新功能,也就是真正意義上實現 即插即用 軟體開發。平台 外掛程式軟體結構是將乙個待開發的目標軟體分為兩部分,一...

C 外掛程式式程式開發

在網上找了下外掛程式式程式設計的資料,這裡自己先借鑑下別人的,同時發現有自己的看法,不過由於本人水平有限,不一定有參考價值,寫出來一方面是為了總結自己,以求提高,另一方面也希望各為朋友看到我的不足,給我提出寶貴意見。外掛程式的本質在於不修改程式主體 平台 的情況下對軟體功能進行拓展與加強,當外掛程式...

C 外掛程式式程式開發

在網上找了下外掛程式式程式設計的資料,這裡自己先借鑑下別人的,同時發現有自己的看法,不過由於本人水平有限,不一定有參考價值,寫出來一方面是為了總結自己,以求提高,另一方面也希望各為朋友看到我的不足,給我提出寶貴意見。外掛程式的本質在於不修改程式主體 平台 的情況下對軟體功能進行拓展與加強,當外掛程式...