如果用過一些優秀的開源或是非開源的應用軟件,就會發現這些軟件的一個很大的優勢就是其開放性,任何有能力的人都可以為其開發不同的插件來增強其的功能。比如著名的foobar2000,Vim和TotalCommander等等。
C#的反射可以用來實現一個簡單的插件系統。思路很簡單,我們創建一個解決方案,包含三個工程,一個為我們的軟件MyApplication,一個為插件接口IPlugin,一個為具體的插件MyPlugin。插件系統的基本思路是我們用一個接口類庫,來定義我們軟件可以使用的插件必須實現的方法簽名。然後我們的軟件MyApplication通過引用該IPlugin dll來動態調用,而具體的實現插件MyPlugin則引用該接口來實現具體的方法。這樣我們的應用程序就能在不知道具體插件的情況下調用插件了。。
結構圖如下:
關鍵代碼也就是通過對程序集載入。搜索到對應接口的實現類。然後調用即可。
運行結果:
源碼下載:PluginSystem.zip