首页 > 解决方案 > ASP.NET Core - 在控制器中使用 IServiceProvider

问题描述

我正在阅读构造函数注入行为(ms docs)

我目前有一个EmailSenderService在 DI 容器中注册的瞬态。

我有一个调用多个业务层服务的控制器。其中一项业务服务依赖于EmailSenderService,在几次业务操作成功后发送电子邮件。

我试图在这里找出最好的方法......我的控制器是否需要IServiceProvider作为依赖项,以便我可以使用类似的东西直接实例化我的BusinessServiceA(及其依赖项) ?EmailSenderServiceActivatorUtilities

如果不使用IServiceProviderin 之类的东西GetServiceOrCreateInstance(IServiceProvider)(这在技术上是服务定位器模式),那么其他选项是什么?

回顾:

我有一个未注入到我的控制器的电子邮件提供程序,但是由我的控制器调用的业务服务使用在 DI 容器中注册的电子邮件提供程序,因此不要将我的电子邮件提供程序指定为我的控制器中的依赖项并传递它到数据服务,在这里使用IServiceProvider正确的方法吗?

标签: c#asp.net-coredependency-injection

解决方案


推荐阅读