asp.net-mvc - 使用Unity动态注入(inject)构造函数参数

标签 asp.net-mvc dependency-injection unity-container constructor-injection

我正在使用 Unity 容器在 ASP.NET MVC 4 应用程序中进行依赖项注入(inject)。

对于特定 Controller (例如 ProductController),我有一个依赖项注入(inject)场景,如下所示:

  1. ProductController 构造函数采用 IProductsRepository 实例。
  2. IProductsRepository 实现有一个接受 IProductsService 实例的构造函数。
  3. IProductsService 实现有一个接受身份验证 token 字符串的构造函数,该字符串是从 Web 请求中的 Cookie 中检索的。

考虑到身份验证 token cookie 只能在创建 Controller 实例后才能检索,在这种情况下执行自动依赖项注入(inject)的正确方法是什么?

最佳答案

如果需要延迟创建ProductService你可以

  • 为该服务注入(inject)自定义工厂
  • 让 DI 容器自动生成类型为 Func<IProductService> 的委托(delegate)工厂并将该委托(delegate)注入(inject)到您的 Controller 中
  • 让容器生成lazy proxy这对消费者隐藏了服务的延迟创建

我更喜欢第三种选择,因为它对于 IProductService 的消费者来说是完全透明的

关于asp.net-mvc - 使用Unity动态注入(inject)构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12797314/

相关文章:

jQuery AJAX 加载未在 ASP.NET MVC Controller 操作上执行

asp.net-mvc - Asp.net Mvc 2.0 RC 设置线程 CurrentCulture/Ui

asp.net - JQuery 日期选择器不工作

c# - 在客户端上显示服务器日期和服务器时间

Angular 依赖注入(inject),服务生命周期

java - 动态依赖关系

visual-studio - 添加到默认具体类的接口(interface)的属性?

c# - 类设计、多态加载方式、依赖注入(inject)

c# - 如何将 IoC 容器传递给 NancyFX? (欧文,团​​结)

c# - Xamarin.Forms 的属性注入(inject)(setter 注入(inject)) Prism