假设的组装我定义AssemblyA出口:确定一个组合的一部分
[Export(typeof(Foo))]
public class Foo
{
...
}
有没有一种方法来确定的Foo从AssemblyA在CompositionContainer中出口的是什么吗?
我想要做的是为任何给定的程序集提供MEF导出,它还必须包含一个特定接口的MEF导出。我希望能够标记任何不满足此规则的程序集。
假设的组装我定义AssemblyA出口:确定一个组合的一部分
[Export(typeof(Foo))]
public class Foo
{
...
}
有没有一种方法来确定的Foo从AssemblyA在CompositionContainer中出口的是什么吗?
我想要做的是为任何给定的程序集提供MEF导出,它还必须包含一个特定接口的MEF导出。我希望能够标记任何不满足此规则的程序集。
从CompositionContainer中无法做到这一点。我建议为每个程序集创建一个AssemblyCatalog,并检查其任何部件是否具有与您想要的接口匹配的ExportDefinition。
您可以使用静态ReflectionModelServices.GetPartType方法识别ComposablePartDefinition的类型和组合。以下示例创建包含容器目录中包含类型的不同装配的列表:
var assemblies = container.Catalog.Parts
.Select(part => ReflectionModelServices.GetPartType(part).Value.Assembly)
.Distinct()
.ToList();