ASP.net MVC dependency injection with unity(DI container); how to inject dependency alias(specific types) based on the different controller types
我想根据控制器类型使用Unity或任何其他DI容器注入特定的依赖项。
下面是一个示例:
2个依赖项的类型为接口
1 2 | 1. NetworkLogger : IAppLogger 2. FileLogger : IAppLogger |
现在,下面的2个控制器使用抽象IAppLogger消耗依赖项。
1 2 | 1. NetworkController depends on IAppLogger 2. FileController depends on IAppLogger |
在我的MVC项目中,我已经安装了Unity和Unity.mvc3软件包。 之后,我得到了bootstrap.cs文件,可以在其中注册类型。 现在我应该如何设置DependencyResolver来解决
1 | IAppLogger to NetworkLogger for controller NetworkController |
和
1 | IAppLogger to FileLogger for controller FileController. |
编辑:
如果应用程序是动态的,那么与在服务定位器或解析器中进行更改相比,更改每个控制器内部的依赖项类型将很困难,并且占用空间更少。 在独立应用程序中,我可以在注册类型时使用别名来实现。
1 2 3 4 5 | Container.RegisterType<IAppLogger, NetworkLogger>("Network"); Container.RegisterType<IAppLogger, FileLogger >("File"); IAppLogger flogger = Container.Resolve<IAppLogger>("File"); IAppLogger nlogger = Container.Resolve<IAppLogger>("Network"); |
如果