相关疑难解决方法(0)

如何获取我的服务中的 IHostApplicationLifetime 并将其注入容器(控制台应用程序)

按照这个答案,我想IHostApplicationLifetime在我的类中注入 ,以便在方法StartAsync结束时正确关闭。

但我不知道如何从控制台获取 applicationLifetime 并通过内置的 dotnet core IoC 容器注入它:

public static IHostBuilder CreateHostBuilder(string[] args)
{
    return Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            config.SetBasePath(Directory.GetCurrentDirectory())
            .AddCommandLine(args)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
        })
        .ConfigureServices((hostContext, services) =>
        {
            services.Configure<ConnectionStringConfiguration>(hostContext.Configuration.GetSection("ConnectionStrings"));
            services.AddTransient<ISmtpClient, MySmtpClient>();
            services.AddTransient<IEmailService, EmailService>();
            services.AddSingleton<IHostApplicationLifetime>(????); // What should I put here ????
            services.AddHostedService<EInvoiceSenderService>();
        })
        .UseSerilog();
}
Run Code Online (Sandbox Code Playgroud)

谢谢 !

c# dependency-injection ioc-container console-application .net-core

4
推荐指数
2
解决办法
5781
查看次数