2011-02-25 54 views
1

假設的組裝我定義AssemblyA出口:確定一個組合的一部分

[Export(typeof(Foo))] 
public class Foo 
{ 
    ... 
} 

有沒有一種方法來確定的Foo從AssemblyA在CompositionContainer中出口的是什麼嗎?

我想要做的是爲任何給定的程序集提供MEF導出,它還必須包含一個特定接口的MEF導出。我希望能夠標記任何不滿足此規則的程序集。

回答

2

從CompositionContainer中無法做到這一點。我建議爲每個程序集創建一個AssemblyCatalog,並檢查其任何部件是否具有與您想要的接口匹配的ExportDefinition。

1

您可以使用靜態ReflectionModelServices.GetPartType方法識別ComposablePartDefinition的類型和組合。以下示例創建包含容器目錄中包含類型的不同裝配的列表:

var assemblies = container.Catalog.Parts 
    .Select(part => ReflectionModelServices.GetPartType(part).Value.Assembly) 
    .Distinct() 
    .ToList(); 
相關問題