注入依赖关系 - 更简单的方法?

时间:2014-05-23 06:08:08

标签: c# .net dependency-injection inversion-of-control castle-windsor

这是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);

有没有办法注入这样的依赖?

1 个答案:

答案 0 :(得分:2)

正如您的问题中所说的一些评论,可以更改使用扩展方法或外观包装该流畅的界面。

无论如何,流畅的接口被设计为更简单并且比方法重载更灵活。

实际上我认为这不值得(改变Windsor如何注册组件)。

我会说你应该按原样使用Windsor ,因为你的代码是可预测的,而其他人可能会更好地理解它,因为他们会发现它是如何工作的,快速查看官方文档。