1

我本可以发誓有几个关于这方面的教程,但我似乎找不到它们,并且不记得我过去是如何做到的(已经多年并且在不同的公司)......

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

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

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

谢谢!

4

2 回答 2

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 包可以为您完成很多工作,具体取决于您的用例,它们可能非常有用,也可能只是矫枉过正。

于 2012-11-02T18:41:22.280 回答
1

可能值得一看 Managed Extensibility Framework:

http://mef.codeplex.com/

于 2012-11-02T18:18:25.697 回答