通过MEF在plugin2中使用plugin1中可用的方法



我有一个基于控制台的MEF应用程序,主机(CompositionContainer)根据命令行参数加载可用的插件程序集,例如:

app.exe plugin1

将加载主机(app.exe)和plugin1。VS解决方案的结构使得每个插件都有自己的项目(因此它有自己的汇编)。

存在一组插件,其中一些有重用代码的机会。例如,plugin1有一个方法CopyFiles(string fileName),同样的功能将被plugin2利用。

现在,在传统的控制台应用程序中,可以添加对plugin1.dll的引用,并通过使用该名称空间进行重用。

我很好奇是否有一种"MEF"的方式,如果你愿意的话,实现这种重用。因此,通过向plugin1's可导出接口添加Import属性并让MEF处理其余部分,可以在plugin2中创建plugin1对象。这可能吗?如果有,是怎么做到的?

或者在设计这样的应用程序时是否应该采用更好的方法?任何有用的学习资源和解释的指针都是额外的巫术。

谢谢!

如果您想要共享的方法在plugin1中,您将Export plugin1。如果你只是想共享一个方法,你也可以Export

plugin2Import plugin1。MEF会处理剩下的事。如果您从命令行获取程序集并为plugin1创建AssemblyCatalog,那么您还需要告诉它plugin2并将其放入AggregateCatalog,或者将它们全部放在目录中并使用DirectoryCatalog(您可以在命令行上传递目录名称)。

MEF编程指南涵盖了类似的场景。

在Visual Studio 2010和。net Framework 4 Training Kit中也有关于MEF的Hands-On-Labs,这很有帮助。

相关内容

最新更新