c# - ASP.NET Core - 在控制器中使用 IServiceProvider
问题描述
我正在阅读构造函数注入行为(ms docs)
我目前有一个EmailSenderService
在 DI 容器中注册的瞬态。
我有一个调用多个业务层服务的控制器。其中一项业务服务依赖于EmailSenderService
,在几次业务操作成功后发送电子邮件。
ControllerA
- 调用业务服务的控制器BusinessServiceA
- 依赖于EmailSenderService
EmailSenderService
- 在 ASP.NET Core DI 容器中注册
我试图在这里找出最好的方法......我的控制器是否需要IServiceProvider
作为依赖项,以便我可以使用类似的东西直接实例化我的BusinessServiceA
(及其依赖项) ?EmailSenderService
ActivatorUtilities
如果不使用IServiceProvider
in 之类的东西GetServiceOrCreateInstance(IServiceProvider)
(这在技术上是服务定位器模式),那么其他选项是什么?
回顾:
我有一个未注入到我的控制器的电子邮件提供程序,但是由我的控制器调用的业务服务使用在 DI 容器中注册的电子邮件提供程序,因此不要将我的电子邮件提供程序指定为我的控制器中的依赖项并传递它到数据服务,在这里使用IServiceProvider
正确的方法吗?
解决方案
推荐阅读
- javascript - 通过 ajax 将数组从 PHP 移动到具有有效 JSON 格式的 JS
- unity3d - 在汽车模型预制件中创建的材质实例
- c++ - 循环定时器线程
- .htaccess - 网址重定向到 .shtml 未知链接
- r - 如何将具有不同数据框名称的列提取到列表中?
- r - 我如何将我的列表转换为所需的列表
- object-detection-api - 使用 Tensorflow 对象检测 API 的自定义 SSD 模型中的许多误报
- reactjs - 如何使用persistStore() 持久化存储?我面临一个错误“商店没有有效的减速器”
- java - Selenium 异常错误 - 元素在点 (x, y) 处不可点击。其他元素会收到点击
- php - Laravel 会话不存储在多个域中