目前,我已经处理了自己的导入的所有类。使用典型示例:
[ImportMany]
private Lazy<ISomeInterface>[] someOfMyInterfaces { get; set; }
public MyConstructor()
{
AssemblyCatalog catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
CompositionContainer container = new CompositionContainer(catalog);
container.ComposeParts(this);
}
现在,我想使用聚合目录,需要更改所有采用导入的类的实现。我想把这个逻辑放在一个集中的地方。基本上删除我的类的依赖性来组成自己的部分。有没有好的模式来实现这个目标?
答案 0 :(得分:1)
是的,您绝对不希望在每个部件中创建容器。相反,尝试让每个具有导入的部分也具有由另一部分导入的导出。然后在您的启动代码中创建一个容器并从中导出一个根导出,这将导致创建所有其他部分并在需要时满足其导入。