2010-05-24 73 views
13

我正在读MEF的某个地方,我可以简单地将dll放入一个目录,我的应用程序(带有一些MEF魔法)将能够读取它并执行其中的代码? 希望只有实现我定义的接口的类?帮助MEF入门

有人可以帮助我走,有些链接也许是我的问题。

我已经通过了一些文档的看了看,但似乎没有什么我后我和棘手的时候我不知道到底是什么要搜索的做...

THX 小号

+1

MEF所做的事情和DI框架所做的并不完全相同(尽管存在重叠,但您的问题可能未被正确标记)。有一篇关于如何让他们在这里很好的文章http://blogs.msdn.com/nblumhardt/archive/2009/03/16/hosting-mef-extensions-in-an-ioc-container.aspx – R0MANARMY 2010-05-24 17:36:15

回答

6

这里有两个MEF “入门” 的帖子由布拉德·艾布拉姆斯:

请注意,这些是使用MEF的预览版本编写的,因此发生了一些变化。例如,AttributedAssemblyCatalog已重命名为AssemblyCatalog,AggregatingComposablePartCatalog现在为AggregatingCatalog,而Silverlight上的PackageCatalog现在是DeploymentCatalog,并且还有其他一些API更改。

+2

非常好。 ..谢谢。 对于其他人,他们可能会发现此链接更有帮助......它更新一点。 http://goo.gl/4jpD – SteveCl 2010-05-25 11:26:50

2

您可以通过标记进口像支持 '二度创作'这不会自动加载程序集。使它成为.NET 4的MEF版本(我猜想复杂的是Preview 9)似乎不会自动加载程序集。我不确定这种行为是否随着MEF的发展而改变。

你需要在例如DirectoryCatalog添加FileSystemWatcher对象,并调用刷新(),然后等待一个或多个这些事件:

catalog.Changed += new EventHandler<ComposablePartCatalogChangeEventArgs>(Catalog_Changed); 
container.ExportsChanged += new EventHandler<ExportsChangeEventArgs>(Container_ExportsChanged); 
directoryCat.Changed += new EventHandler<ComposablePartCatalogChangeEventArgs>(dCat_Changed); 
1

这里是WPF,MVVM和MEF建立了一个demo application (用于组合和可扩展性)。

1

This article提供了MEF工作的一个简单的一个通用的方法:

  1. 最简单的方式(一般)使用MEF。
  2. 如何使用MEF完全懒惰也为Dll加载过程。