gro*_*kky 1 c# asp.net dependency-injection asp.net-core
我已经FooBar使用ASP.NET的内置容器注册了我的类型.
我需要一个动作方法中的实例.如果我在所有控制器的动作中都需要它,那么我会将它注入构造函数中.但我只需要一种动作方法.
所以在动作方法中,我假设我可以这样做(未经测试):
var service = HttpContext.RequestServices.GetService(typeof(FooService)) as FooService;
Run Code Online (Sandbox Code Playgroud)
但是文档说这是一个坏主意.我同意.
那么我的选择是什么?
您可以使用FromServicesattribute将依赖项注入操作:
public IActionResult SampleAction([FromServices]FooService fooService)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
有时,您不需要为控制器中的多个操作提供服务.在这种情况下,将服务作为参数注入动作方法可能是有意义的.这是通过使用属性[FromServices]标记参数来完成的,如下所示:
请参阅官方文档:https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/dependency-injection#action-injection-with-fromservices
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |