【问题标题】:how to write an app to allow for plugins?如何编写允许插件的应用程序?
【发布时间】:2012-11-02 18:14:57
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

标签: c# plugins add-in


【解决方案1】:

有很多方法,但很简单:

扫描文件夹:

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

【讨论】:

  • 谢谢!正是我想要的!
【解决方案2】:

可能值得一看托管可扩展性框架:

http://mef.codeplex.com/

【讨论】:

    猜你喜欢
    • 2015-03-08
    • 1970-01-01
    • 2011-10-31
    • 2022-10-13
    • 2014-03-01
    • 2020-04-03
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多