这是Installer
DI / IOC中的Windstor Castle
课程。
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component
.For<IServiceRequest>()
.ImplementedBy<ServiceRequest>()
.LifestyleScoped());
container.Register(Classes
.FromAssemblyContaining<Values1Controller>()
.BasedOn<IHttpController>()
.LifestyleScoped());
container.Register(Classes
.FromAssemblyContaining<Values2Controller>()
.BasedOn<IHttpController>()
.LifestyleScoped());
container.Register(Component
.For<IServiceRequest1>()
.ImplementedBy<ServiceRequest1>()
.LifestyleScoped());
}
我正在寻找的是一种宣告类似
的简单方法 container.Register(Values1Controller, IServiceRequest, ServiceRequest);
container.Register(Values2Controller, IAnotherServiceRequest, AnotherServiceRequest);
有没有办法注入这样的依赖?
答案 0 :(得分:2)
正如您的问题中所说的一些评论,可以更改使用扩展方法或外观包装该流畅的界面。
无论如何,流畅的接口被设计为更简单并且比方法重载更灵活。
实际上我认为这不值得(改变Windsor如何注册组件)。
我会说你应该按原样使用Windsor ,因为你的代码是可预测的,而其他人可能会更好地理解它,因为他们会发现它是如何工作的,快速查看官方文档。