我可以發誓有幾個關於這方面的教程,但我似乎無法找到它們,並且不記得我是如何做到的(過去幾年和不同的公司)...如何編寫應用程序以允許插件?
我將在C#中工作。我想我所做的就是創建一個界面,其中包含應用程序和插件所需的屬性/方法來回傳遞...
運行該應用程序並掃描插件的文件夾,加載插件並與之交互它通過前面提到的接口...
如果上述是在正確的軌道上,有人可以指向我加載插件或更好的示例,教程?
謝謝!
我可以發誓有幾個關於這方面的教程,但我似乎無法找到它們,並且不記得我是如何做到的(過去幾年和不同的公司)...如何編寫應用程序以允許插件?
我將在C#中工作。我想我所做的就是創建一個界面,其中包含應用程序和插件所需的屬性/方法來回傳遞...
運行該應用程序並掃描插件的文件夾,加載插件並與之交互它通過前面提到的接口...
如果上述是在正確的軌道上,有人可以指向我加載插件或更好的示例,教程?
謝謝!
有大量的它的方式,但簡單:
掃描的文件夾:
string[] files = System.IO.Directory.GetFiles("yourpath", "*.dll");
然後加載程序集(對於上面的每個文件)
Assembly.Load or Assembly.LoadFrom
種
從組裝到枚舉類型:
Type[] types = assembly.GetTypes();
檢查類型實現你的接口
Type t;
YourInterface.IsAssignableFrom(t);
然後實例化:
object o = Activator.CreateInstance(t);
YourInterface iface = (YourInterface)o;
這就是它,異常處理等位當然省略
一些DI軟件包可以爲你做很多工作,這取決於你的用例,它們可能非常有用或者只是矯枉過正。
謝謝!正是我正在尋找的! –
也許值得考慮看看託管擴展框架:
下面是示例: http://stackoverflow.com/questions/12055308/vb-net-dynamic-plugin-components/12058493#12058493 –
我同意花錢,你應該看一看MEF。查看導出元數據功能,可以用它來發現插件而不用實際激活它們。 –