簡體   English   中英

如何使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM