通过MEF利用plugin2中plugin1中可用的方法

时间:2011-10-06 17:30:50

标签: c# .net mef

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

app.exe plugin1

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

存在一组插件,其中一些插件可以重用代码。因此,例如plugin1有一个方法CopyFiles(string fileName)plugin2将使用相同的功能。

现在,在传统的控制台应用程序中,可以添加对plugin1.dll的引用,并通过使用该命名空间来实现它的重用业务。

我很好奇是否有“MEF”方式,如果你愿意的话,实现这种重复使用。因此,通过向plugin1可导出界面添加plugin2属性并让MEF处理其余内容,可以在Import中创建plugin1's对象。那可能吗?如果是这样,怎么样?

或者在设计此类应用程序时应采取更好的方法吗?奖励伏都教任何有用的学习资源和解释的指针。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您要分享的方法位于plugin1,则可以Export plugin1。如果您只是想分享该方法,也可以Export方法。

plugin2Import插件1。 MEF将负责其余部分。如果您从命令行获取程序集并为AssemblyCatalog创建plugin1,那么您还需要告诉它plugin2并将其转换为AggregateCatalog,或者将它们全部放在目录中并使用DirectoryCatalog(您可以在命令行上传递目录名称)。

MEF Programming Guide涵盖了类似的情况。

Visual Studio 2010 and .NET Framework 4 Training Kit中还有MEF动手实验,这对我们很有用。