.net core 如何在dotnet core控制台启动时运行特定服务
在.NET Core控制台应用程序中,我想在Program.cs中执行此操作:.net core 如何在dotnet core控制台启动时运行特定服务,.net-core,dependency-injection,console-application,serilog,mediatr,.net Core,Dependency Injection,Console Application,Serilog,Mediatr,在.NET Core控制台应用程序中,我想在Program.cs中执行此操作: public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseSerilog() .UseServiceProviderFactory(new AutofacServiceProviderFactor
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureServices(serviceCollection =>
{
serviceCollection.AddSingleton(new MyService()); // error on this line
});
webBuilder.UseStartup<Startup>();
});
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.useserlog()
.UseServiceProviderFactory(新的AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.ConfigureServices(serviceCollection=>
{
serviceCollection.AddSingleton(new MyService());//此行出错
});
webBuilder.UseStartup();
});
我得到的错误是:
没有给出与所需的形式化参数相对应的参数
“MyService(ILogger,IMediator)”的参数“logger”
当我调用MyService的构造函数时,我不知道应该如何添加2个必需的参数(serilog记录器和mediat-r实例)
我需要这个,因为当我打开/运行控制台时必须调用一次服务…您可以使用以下代码:
servicecolection.AddSingleton(ctx=>newmyservice(ctx.GetService(),ctx.GetService());
但是注入IMediator
的实例并不是一个好主意,它的生存期(我猜,因为它通常是有范围的)比您的MyService
要短
一些信息: