2010-05-24 109 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加載過程。