如何编写应用程序以允许插件?

时间:2012-11-02 18:14:58

标签: c# plugins add-in

我本来可以发誓这里有几个教程,但我似乎无法找到它们,也不记得我过去是怎么做的(多年来和不同的公司一起)...

我将在C#工作。我认为我所做的是创建一个界面,其中包含应用程序所需的属性/方法以及插件来回通信...

运行应用程序,扫描插件的文件夹,加载插件并通过前面提到的界面与之交互......

如果以上是正确的轨道,有人可以指出我加载插件或更好的示例,教程吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

有很多方法,但很简单:

扫描文件夹:

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软件包可以为您完成大量工作,具体取决于您的用例,它们可能非常有用或者只是过度使用。

答案 1 :(得分:1)

可能值得一看Managed Extensibility Framework:

http://mef.codeplex.com/