我本可以发誓有几个关于这方面的教程,但我似乎找不到它们,并且不记得我过去是如何做到的(已经多年并且在不同的公司)......
我将在 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 包可以为您完成很多工作,具体取决于您的用例,它们可能非常有用,也可能只是矫枉过正。
可能值得一看 Managed Extensibility Framework: