既然做好了架構,我們就希望為某個目标服務,我們要提供一些基本的服務,友善使用者繼續擴充他的功能。首先想到的功能就是,菜單,工具欄的管理,接下來我們要實作一些更流行的功能,比如停靠工具欄等等。
如何實作這些服務呢?我們希望我們的插件在運作時可以獲得應用程式本身的菜單,工具條,停靠工具欄等等,然後向他們添加項目,比如加入一個菜單項,添加一個工具欄按鈕。為了在運作時獲得某個菜單或者工具欄,我們要為每一個菜單後者工具欄配置設定一個Key,然後放到一個詞典中,當需要的時候,我們通過這個key來獲得執行個體。對于這個Key呢,在我的例子比較簡單就是他的名字,我們來看看ToolStripService的代碼:
複制 儲存
對于視圖或者是停靠工具欄來說,最好是不要直接在詞典中放入執行個體,而是應該将對象的類型放入到詞典中,因為,視圖和停靠工具欄本身都是從Form派生而來,是以,當視圖或者是停靠工具欄被關閉的時候,對象就被銷毀了,而對象的建立在是插件的Load方法裡完成的,我們不可能再去調用插件的Load方法,這樣給我們的使用帶來了不便,是以我們應該注冊類型,然後在Service中實作一個Show方法是比較合理的,這裡為了示範友善,我就直接在Load裡面執行個體化了,并把執行個體放到了詞典裡。
下邊這個圖例裡顯示了插件加入的停靠工具欄,工具欄,一個新的菜單“View”和View菜單的子菜單:
最近實在是沒有時間,文章發的很慢,也寫的很錯,說的不清楚的地方,可以參考一下源代碼,望各位朋友見諒。
源代碼
<a href="http://files.cnblogs.com/guanjinke/pluginsample3.rar">http://files.cnblogs.com/guanjinke/pluginsample3.rar</a>