我有一个基于控制台的MEF应用程序,其host(CompositionContainer)基于命令行参数加载可用的插件程序集,例如:
app.exe plugin1
Run Code Online (Sandbox Code Playgroud)
将加载主机(app.exe)和plugin1.VS解决方案的结构使得每个插件都有自己的项目(因此它是自己的程序集).
存在一组插件,其中一些插件有重用代码的机会.因此,例如plugin1有一个方法,CopyFiles(string fileName)并且将使用相同的功能plugin2.
现在,在传统的控制台应用程序中,可以添加plugin1.dll对该命名空间的引用,并使用该命名空间来重新使用它.
我很好奇是否有"MEF"方式,如果你愿意的话,实现这种重复使用.因此,通过向可导出接口添加属性并让MEF处理其余部分来创建plugin1in 的对象.那可能吗?如果是这样,怎么样?plugin2Importplugin1's
或者在设计此类应用程序时是否应采取更好的方法?奖励伏都教任何有用的学习资源和解释的指针.
谢谢!
如果您想要共享的方法在 中plugin1,您就会这样做Export plugin1。Export如果您只是想共享该方法,也可以使用该方法。
plugin2会Import插件1。MEF 会处理剩下的事情。如果您从命令行获取程序集并创建AssemblyCatalogfor plugin1,那么您还需要告诉它plugin2并将其放入 an 中AggregateCatalog,或者将它们全部放入一个目录中并使用 a DirectoryCatalog(您可以在命令中传递目录名称)线)。
MEF 编程指南涵盖了类似的场景。
Visual Studio 2010 和 .NET Framework 4 培训工具包中还有 MEF 动手实验室,这也很有帮助。
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |