摘要 class 温莎城堡的依赖注入

Abstract class dependency injection with Castle Windsor

Castle Windsor 用作 IoC 容器。 有IPipeline界面。它由基础 class: PipelineBase : IPipeline 实现。依次由两个 classes 继承:FishPipeline : PipelineBaseOctopusPipeline : PipelineBase.

有两个客户classes,上面的classes必须注入:

首先 class LargeAquarium 需要 FishPipelineOctopusPipeline。第二个 TinyAquarium 只需要 FishPipeline.

我该如何解决?是否需要添加IFishPipelineIOctopusPipeline接口?

不,只要注入的对象需要公开不属于 IPipeline 的内容即可。

通过采用 Matías 的回答,我可以这样做:

考虑到 FishPipelineOctopusPipeline 都有自己的额外成员要访问,这些成员没有在 IPipeline 中声明,无论如何我们需要两个新接口,[=15= 】 其中之一。那么:

IOctopusPipeline: IPipeline

PipelineBase: IPipeline

OctopusPipeline: PipelineBase, IOctopusPipeline

然后注入:

 _container.Register(Component.For<IOctopusPipeline>().ImplementedBy<OctopusPipeline>());