2010-11-24 110 views
3

我想用MEF加載一個DLL作爲需要的時候,但是,我讀過的教程中的信息並不是最有用的。MEF加載DLL一個接一個

This site給出了一些代碼(如下所示),但沒有真正解釋任何事情。

private void LoadPlugins() { 
    var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); 
    var container = new CompositionContainer(catalog); 
    var batch = new CompositionBatch(); 
    batch.AddPart(this); 
    container.Compose(batch); 
} 

基本上我有一個Run方法的接口,我正在實現與幾個DLL的接口。我後是可以做這樣的事情(僞代碼)

bob = LoadDll(dllPath); 
bob.Run(); 

有沒有指定「Bob」的類型的方式或者這將是通用的?如果有人可以幫助,我會非常感激!

+0

你怎麼知道要加載哪一個? MEF的意義在於,除了抽象/接口定義之外,你不知道任何*關於具體類型的東西;你如何確定從一個特定的DLL加載導入是合適的? – arootbeer 2010-11-24 15:49:52

回答

1

你想要的東西可以用MEF來完成,但它相當先進。您需要構建一個緩存目錄(請參閱我們的Codeplex站點中的示例)或使用其他元數據閱讀器(如CCI)。

開箱即用的MEF會加載程序集以反映它們(尋找mef的屬性)。