Castle Windsor用作IoC容器。
有IPipeline
接口。它由基类实现:PipelineBase : IPipeline
。反过来,它由两个类继承:FishPipeline : PipelineBase
和OctopusPipeline : PipelineBase
。
有两个客户类,必须注入上层类:
头等级LargeAquarium
同时需要FishPipeline
和OctopusPipeline
。第二个TinyAquarium
只需要FishPipeline
。
我该如何解决?是否需要添加IFishPipeline
和IOctopusPipeline
接口?
答案 0 :(得分:2)
不,只要注入的对象需要暴露不属于IPipeline
的东西。
答案 1 :(得分:0)
通过Matías的回答,我能够这样做:
假设FishPipeline
和OctopusPipeline
都有自己的其他成员可以访问,但未在IPipeline
中声明,无论如何我们需要两个新接口,IOctopusPipeline
一个他们然后:
IOctopusPipeline: IPipeline
PipelineBase: IPipeline
OctopusPipeline: PipelineBase, IOctopusPipeline
然后注入:
_container.Register(Component.For<IOctopusPipeline>().ImplementedBy<OctopusPipeline>());