You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6控制台应用中MediatR实现及_mediatr.Send(obj)调用咨询

在.NET 6控制台应用中实现MediatR并使用Send方法调用处理函数

1. 安装必要的NuGet包

打开终端,在项目目录下执行以下命令:

dotnet add package MediatR
dotnet add package MediatR.Extensions.Microsoft.DependencyInjection

前者是MediatR核心库,后者用于将MediatR集成到.NET的依赖注入系统中。

2. 定义请求类

请求类需要实现IRequest<T>接口,T是处理请求后返回的结果类型。比如定义一个求和请求:

using MediatR;

public class SumRequest : IRequest<int>
{
    public int Number1 { get; set; }
    public int Number2 { get; set; }
}

3. 实现请求处理类

处理类需要继承IRequestHandler<TRequest, TResponse>接口,实现Handle方法编写业务逻辑:

using MediatR;

public class SumRequestHandler : IRequestHandler<SumRequest, int>
{
    public Task<int> Handle(SumRequest request, CancellationToken cancellationToken)
    {
        // 这里编写具体业务逻辑,比如计算两个数的和
        var sum = request.Number1 + request.Number2;
        return Task.FromResult(sum);
    }
}

4. 配置依赖注入并调用Send方法

在Program.cs中,使用.NET 6的顶级语句配置Host,注册MediatR并获取实例调用:

using MediatR;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

// 构建Host并配置服务
var host = Host.CreateDefaultBuilder(args)
    .ConfigureServices(services =>
    {
        // 扫描当前程序集,注册所有请求和处理类
        services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Program).Assembly));
    })
    .Build();

// 从DI容器获取IMediator实例
var mediator = host.Services.GetRequiredService<IMediator>();

// 创建请求对象并调用Send方法
var sumRequest = new SumRequest { Number1 = 5, Number2 = 10 };
var result = await mediator.Send(sumRequest);

Console.WriteLine($"计算结果:{result}");

await host.RunAsync();

关键注意事项

  • 确保请求类和对应的处理类在同一个程序集内,或者在注册MediatR时指定正确的程序集(比如RegisterServicesFromAssembly(Assembly.GetExecutingAssembly()))
  • Send方法是异步方法,必须使用await关键字调用
  • 每个请求类对应一个处理类,MediatR会自动根据请求类型匹配对应的处理逻辑

内容的提问来源于stack exchange,提问作者bflow1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:18:17