2011-02-25 50 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(); 
相关问题