繁体   English   中英

ASP.net MVC依赖注入与unity(DI容器); 如何根据不同的控制器类型注入依赖项别名(特定类型)

[英]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个依赖项的类型为接口IAppLogger

1. NetworkLogger : IAppLogger
2. FileLogger : IAppLogger

现在,下面的2个控制器使用抽象IAppLogger消耗依赖项。

1. NetworkController depends on IAppLogger
2. FileController depends on IAppLogger

在我的MVC项目中,我已经安装了Unity和Unity.mvc3软件包。 之后,我得到了bootstrap.cs文件,可以在其中注册类型。 现在我应该如何设置DependencyResolver来解决

IAppLogger to NetworkLogger for controller NetworkController 

IAppLogger to FileLogger for controller FileController.

编辑:


如果应用程序是动态的,那么与在服务定位器或解析器中进行更改相比,更改每个控制器内部的依赖项类型将很困难,并且占用空间较小。 在独立应用程序中,我可以在注册类型时使用别名。

Container.RegisterType<IAppLogger, NetworkLogger>("Network"); 
Container.RegisterType<IAppLogger, FileLogger >("File"); 

IAppLogger flogger = Container.Resolve<IAppLogger>("File");     
IAppLogger nlogger = Container.Resolve<IAppLogger>("Network");

如果NetworkController应始终与NetworkLogger一起运行,则应取决于NetworkLogger ,而不取决于IAppLogger 或者,如果需要,也可以在INetworkLogger

FileController

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM