使用Unity有条件地注入依赖

本文关键字:注入 依赖 有条件 Unity 使用 | 更新日期: 2023-09-27 18:14:29

我使用Unity (DI)注入我的注册服务到我的控制器。

控制器

public class RenewalController : Controller
{
    private readonly IRegistrationService _registrationService;
    private readonly IRenewalTypedFactory _renewalFactory;
    public RenewalController(IRegistrationService registrationService, IRenewalTypedFactory renewalFactory)
    {
        _renewalFactory = renewalFactory;
        _registrationService = registrationService;
    }
    // GET: Renewal
    public ActionResult Renew()
    {
        return View();
    }

统一配置

container.RegisterType<IRegistrationService, RegistrationService>(new PerRequestLifetimeManager());

已经有一个注册服务,但是我现在必须创建一个更新服务类,它重写了一个方法。

public class RenewalService : RegistrationService, IRegistrationService
{
   ...
}

我如何告诉我的Unity配置注入我的IRegistrationService的续订服务,只有当我的控制器要求它?

我知道在Ninject中你会这样做:

.WhenInjectedInTo(typeof(RenewalController));

我读过这个问题,但不能理解它,也不能把它应用到我的例子中:

如何根据unity的注入类型有条件地绑定实例?

使用Unity有条件地注入依赖

告诉容器应该向RenewalController注入什么依赖

container.RegisterType<RenewalController>(new InjectionConstructor(
             new ResolvedParameter<RenewalService>(), 
             new ResolvedParameter<IRenewalTypedFactory>()));