在控制台应用程序中使用 MediatR

问题描述 投票:0回答:2

有谁知道如何在控制台应用程序中实现 MediatR,以使用 _mediatr.Send(obj) 语法调用处理函数。我正在使用 .Net 6 框架。感谢您的帮助。

c# .net-core console-application mediatr
2个回答
13
投票

首先,您必须安装这些软件包:

  1. Microsoft.Extensions.DependencyInjection
  2. MediatR
  3. MediatR.Extensions.Microsoft.DependencyInjection

然后你可以从

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());

0
投票

这可以在 .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();
© www.soinside.com 2019 - 2024. All rights reserved.