gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:57:17 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com