有谁知道如何在控制台应用程序中实现 MediatR,以使用 _mediatr.Send(obj) 语法调用处理函数。我正在使用 .Net 6 框架。感谢您的帮助。
首先,您必须安装这些软件包:
然后你可以从
IMediator
获取DI
并使用它。
using MediatR;
using Microsoft.Extensions.DependencyInjection;
using System.Reflection;
var serviceCollection = new ServiceCollection()
.AddMediatR(Assembly.GetExecutingAssembly())
.BuildServiceProvider();
var mediator = serviceCollection.GetRequiredService<IMediator>();
//mediator.Send(new Command());
这可以在 .NET 8 和 MediatR 12 中的控制台应用程序中工作。
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
builder.Services.AddTransient<IProcessingService, ProcessingService>(); // my own service where MediatR is injected
builder.Services.AddMediatR(cfg => {
cfg.RegisterServicesFromAssembly(typeof(Program).Assembly);
});
using IHost host = builder.Build();
var processingService = host.Services.GetService<IProcessingService>();
processingService.Process();