構建外掛程式式的應用程式框架 二 訂立契約

2021-08-29 17:10:04 字數 1184 閱讀 7340

如何使用.net訂立契約呢?首先想到的inte***ce,其次是抽象類,但是在外掛程式模式中我使用介面,因為我們是在滿足應用程式的主要目的的基礎上來提供附加的外掛程式功能,就這一點來說,介面更靈活,更容易擴充套件。接下來,如何訂立契約的內容呢?這就要根據你的業務需求了,為了講解的方便,我們定義乙個最最基本的外掛程式式應用程式的外掛程式契約。我們做乙個假定,我們的應用程式是乙個多文件的應用程式,包含乙個主選單欄,乙個工具欄,選單欄可以在程式的上下左右四個方向停靠,另外還有乙個狀態列。到後邊,如果有必要,我會擴充套件這個應用程式,讓他本身提供更多的可供外掛程式使用的功能。所以就目前而言,我想實現的功能就是讓外掛程式為主程式新增工具條,選單項並實現一些簡單的功能。

應用程式向外掛程式提供服務有兩種方式,一種是直接再應用程式介面中宣告屬性或者方法,一種是將應用程式介面宣告成乙個服務容器。我打算兩種方式都用,明確的功能就在介面中直接宣告成屬性或者方法,另外將應用程式宣告成乙個服務容器,以方便插入更多的服務功能,提高應用程式的可擴充套件性。    

下邊是乙個非常簡單的應用程式介面定義,對於我們的假定已經足夠了。

usingsystem;usingsystem.collections.generic;usingsystem.text;usingsystem.componentmodel.design;usingsystem.windows.forms;namespacepluginframework

toolstrippanel righttoolpanel

toolstrippanel toptoolpanel

toolstrippanel bottomtoolpanel

menustrip mainmenustrip

statusstrip statusbar

}}

外掛程式的介面定義:

usingsystem;usingsystem.collections.generic;usingsystem.text;namespacepluginframework

string descriptionvoidload();voidunload();eventeventhandlerloading;

}}

構建外掛程式式的應用程式框架 二 訂立契約

如何使用.net訂立契約呢?首先想到的inte ce,其次是抽象類,但是在外掛程式模式中我使用介面,因為我們是在滿足應用程式的主要目的的基礎上來提供附加的外掛程式功能,就這一點來說,介面更靈活,更容易擴充套件。接下來,如何訂立契約的內容呢?這就要根據你的業務需求了,為了講解的方便,我們定義乙個最最基...

構建外掛程式式的應用程式框架 二 訂立契約

無論是用com的方式,還是普通dll,抑或 net net 實現外掛程式式的應用程式框架,所以其它的方式我就不再提了。如何使用 net 訂立契約呢?首先想到的inte ce,其次是抽象類,但是在外掛程式模式中我使用介面,因為我們是在滿足應用程式的主要目的的基礎上來提供附加的外掛程式功能,就這一點來說...

構建外掛程式式的應用程式框架 五 管理外掛程式

我們現在已經搭建了外掛程式式的應用程式框架,接下來的工作就是要充實框架的內容,提供基本的服務,也就是service。我想首要的任務就是提供外掛程式的管理服務,我在前面的文章也提到了,要實現動態載入必須要知道外掛程式寄宿在 哪些要載入,哪些不載入,這些就是這篇文章要討論的問題。首先解決的就是外掛程式放...