我已经使用ASP.NET的内置容器注册了我的FooBar
类型。
我需要一个动作方法中的实例。如果我在所有控制器的动作中都需要它,那么我会将它注入构造函数中。但我只需要一个动作方法。
所以在动作方法中,我假设我可以这样做(未经测试):
var service = HttpContext.RequestServices.GetService(typeof(FooService)) as FooService;
但是the docs say这是一个坏主意。我同意。
那么我的选择是什么?
答案 0 :(得分:5)
您可以使用FromServices
属性为操作注入依赖项:
public IActionResult SampleAction([FromServices]FooService fooService)
{
// ...
}
有时候,您不需要为一项以上的行动提供服务 你的控制器。在这种情况下,注入服务可能是有意义的 作为action方法的参数。这是通过标记来完成的 具有[FromServices]属性的参数如下所示: