通过MEF在插件2中利用插件1中可用的方法

6

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

app.exe plugin1

将加载主机(app.exe)和plugin1。VS解决方案的结构是每个插件都有自己的项目(因此有自己的程序集)。

存在一组插件,其中一些插件有机会重复使用代码。例如,plugin1具有一个方法CopyFiles(string fileName),这个功能也要被plugin2利用。

现在,在传统的控制台应用程序中,人们会添加对plugin1.dll的引用,并使用该命名空间进行重用。

我想知道是否有一种“MEF”的方式来实现这种重用。因此,可以通过在plugin1的可导出接口上添加Import属性来创建plugin2中的plugin1对象,让MEF来处理其余部分。这可能吗?如果是这样,怎么做?

还是在设计这样的应用程序时应采取更好的方法?如果有任何有用的学习资源和解释的指针,那就额外加分了。

谢谢!

1个回答

2
如果您想要分享的方法在plugin1中,那么您需要导出plugin1。 如果您只想共享该方法,则还可以导出该方法。 plugin2将导入plugin1。 MEF会处理其余部分。 如果您从命令行获取程序集并为plugin1创建AssemblyCatalog,则还需要告诉它有关plugin2并将其放入AggregateCatalog中,或者将它们全部放在一个目录中并使用DirectoryCatalog(您可以通过命令行传递目录名称)。 MEF编程指南涵盖了类似的场景。
还有MEF的Hands-On-Labs在Visual Studio 2010和.NET Framework 4培训套件中非常有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接