如何编写应用程序以允许插件?
问题描述:
我可以发誓有几个关于这方面的教程,但我似乎无法找到它们,并且不记得我是如何做到的(过去几年和不同的公司)...如何编写应用程序以允许插件?
我将在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软件包可以为你做很多工作,这取决于你的用例,它们可能非常有用或者只是矫枉过正。
+0
谢谢!正是我正在寻找的! –
下面是示例: http://*.com/questions/12055308/vb-net-dynamic-plugin-components/12058493#12058493 –
我同意花钱,你应该看一看MEF。查看导出元数据功能,可以用它来发现插件而不用实际激活它们。 –