与Castle Windsor的抽象类依赖注入

时间:2015-08-18 17:53:15

标签: c# dependency-injection inversion-of-control abstract-class castle-windsor

Castle Windsor用作IoC容器。 有IPipeline接口。它由基类实现:PipelineBase : IPipeline。反过来,它由两个类继承:FishPipeline : PipelineBaseOctopusPipeline : PipelineBase

有两个客户类,必须注入上层类:

头等级LargeAquarium同时需要FishPipelineOctopusPipeline。第二个TinyAquarium只需要FishPipeline

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

2 个答案:

答案 0 :(得分:2)

不,只要注入的对象需要暴露不属于IPipeline的东西。

答案 1 :(得分:0)

通过Matías的回答,我能够这样做:

假设FishPipelineOctopusPipeline都有自己的其他成员可以访问,但未在IPipeline中声明,无论如何我们需要两个新接口,IOctopusPipeline一个他们然后:

IOctopusPipeline: IPipeline

PipelineBase: IPipeline

OctopusPipeline: PipelineBase, IOctopusPipeline

然后注入:

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