[英].Net Core Dependency Injection in Console App
我正在嘗試在.NET Core控制台應用程序中使用依賴項注入。 關於它的文章很多,但是找不到解決我問題的文章。 我試圖使用來自aspnet核心Web應用程序的原始服務,這就是為什么我擁有WebHost。
我的主要問題是創建自己的類的實例,所有依賴項似乎都起作用,並且我的控制台應用程序啟動。
我的Program類中有以下代碼:
static void Main(string[] args)
{
var host = WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => options.AddServerHeader = false)
.UseStartup<Startup>()
.Build();
var services = new ServiceCollection().AddLogging();
var container = new Container();
var serviceProvider = container.GetInstance<IServiceProvider>();
由於此錯誤,因此無法編譯此代碼:“容器”不包含“ GetInstance”的定義
我如何創建具有此實現的自定義類App的實例:
public class App
{
private readonly IProductService _productService;
public App(IProductService productService)
{
_productService = productService;
}
}
我不知道您的設置中是什么“容器”,但是通常您可以通過在ServiceCollection
上調用BuildServiceProvider
來創建服務提供者。
var provider = services.BuildServiceProvider();
var instance = provider.GetService<App>();
不過,您首先需要在服務集合中注冊App
以及所需的任何IProductService
。
在這種情況下,您甚至不需要創建自己的ServiceCollection
或ServiceProvider
您可以使用已經具有的IWebHost
的Services
屬性:
var app = host.Services.GetService<App>();
WebHost.CreateDefaultBuilder
已經添加了日志記錄服務,因此也不需要這樣做。
注意:我假設您已經在Startup.ConfigureServices
注冊了App
和IProductService
類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.