集中MEF组合物

时间:2011-06-03 18:36:35

标签: c# mef

目前,我已经处理了自己的导入的所有类。使用典型示例:

[ImportMany]
private Lazy<ISomeInterface>[] someOfMyInterfaces { get; set; }
public MyConstructor()
{
    AssemblyCatalog catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
    CompositionContainer container = new CompositionContainer(catalog);
    container.ComposeParts(this);
}

现在,我想使用聚合目录,需要更改所有采用导入的类的实现。我想把这个逻辑放在一个集中的地方。基本上删除我的类的依赖性来组成自己的部分。有没有好的模式来实现这个目标?

1 个答案:

答案 0 :(得分:1)

是的,您绝对不希望在每个部件中创建容器。相反,尝试让每个具有导入的部分也具有由另一部分导入的导出。然后在您的启动代码中创建一个容器并从中导出一个根导出,这将导致创建所有其他部分并在需要时满足其导入。