[英]How do I get a reference to an IHostedService via Dependency Injection in ASP.NET Core?
[英]How do I get a dependency needed in one method only, using ASP.NET Core
我已經用ASP.NET的內置容器注冊了FooBar
類型。
我的一種操作方法中需要一個實例。 如果我在控制器的所有操作中都需要它,則可以將其注入到構造函數中。 但是我只需要一種動作方法就可以了。
因此,在操作方法中,我假設可以做到這一點(未經測試):
var service = HttpContext.RequestServices.GetService(typeof(FooService)) as FooService;
但是文檔說那是個壞主意。 我同意。
那我有什么選擇呢?
您可以使用FromServices
屬性將依賴項注入到動作中:
public IActionResult SampleAction([FromServices]FooService fooService)
{
// ...
}
有時,您不需要為一個控制器內的多個動作提供服務。 在這種情況下,將服務作為操作方法的參數注入可能是有意義的。 這是通過用屬性[FromServices]標記參數來完成的,如下所示:
請參閱官方文檔: https : //docs.microsoft.com/zh-cn/aspnet/core/mvc/controllers/dependency-injection#action-injection-with-fromservices
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.