C# Castle Windsor抽象类依赖注入

C# Castle Windsor抽象类依赖注入,c#,dependency-injection,inversion-of-control,abstract-class,castle-windsor,C#,Dependency Injection,Inversion Of Control,Abstract Class,Castle Windsor,温莎城堡用作IoC容器。 有IPipeline接口。它由基类实现:PipelineBase:IPipeline。反过来,它由两个类继承:FishPipeline:PipelineBase和octopuspipline:PipelineBase 有两类客户,必须将上层客户注入: 头等舱LargeAquarium需要FishPipeline和OctopusPipeline。第二个TinyAquarium只需要FishPipeline 我怎样才能解决它?是否需要添加IFishPipeline和IOct

温莎城堡用作IoC容器。 有
IPipeline
接口。它由基类实现:
PipelineBase:IPipeline
。反过来,它由两个类继承:
FishPipeline:PipelineBase
octopuspipline:PipelineBase

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

头等舱
LargeAquarium
需要
FishPipeline
OctopusPipeline
。第二个
TinyAquarium
只需要
FishPipeline


我怎样才能解决它?是否需要添加
IFishPipeline
IOctopusPipeline
接口?

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

的东西,采用Matías的答案,我就可以这样做:

鉴于
FishPipeline
OctopusPipeline
都有自己的附加成员要访问,这些成员没有在
IPipeline
中声明,无论如何,我们需要两个新接口,
IOctopusPipeline
其中一个。然后:

IOctopusPipeline: IPipeline

PipelineBase: IPipeline

OctopusPipeline: PipelineBase, IOctopusPipeline
然后注入:

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

@ValeO您想要什么样的样品D只是,如果您需要注入对象作为
ipipepeline
来访问比它本身提供的成员更多的成员,那么您需要创建一个
IPipelineExtended
(名称由您决定),并提供更多的成员来通过类实现,然后将此界面配置为组件,而不是
ipipepeline
@ValeO也许您觉得我的答案太短了,但有时短答案更好!我很高兴你有这个想法。这只是关于使用常规接口,就像在任何C#代码中一样。你应该添加如何获得解决方案作为答案,而不是作为问题的一部分,但是接口不能实现类!我说的是
ioctopuspipline:PipelineBase,ioctopuspipline
。我知道
PipelineBase
是一个类。我错了吗?哦,错了。这是之前的octopus管道)