前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >net8实现MediatR小示例C#

net8实现MediatR小示例C#

作者头像
DotNet Whisperer
发布2024-08-14 15:33:43
660
发布2024-08-14 15:33:43
举报
文章被收录于专栏:DotNet杂记

MediatR是.net下的一个实现消息传递的库,简洁高效,它采用中介者设计模式,通过进程内消息传递机制,进行请求/响应、命令、查询、通知和事件的消息传递,可通过泛型来支持消息的智能调度,用于领域事件中。

实践:

  • 新建一个net8 WebApi标准项目,选择启用OpenAPI支持和使用控制器;
  • 添加项目引用,<PackageReference Include="MediatR" Version="12.2.0" />
  • 注册服务:
代码语言:javascript
复制
1 // Add services to the container.
2 builder.Services.AddMediatR(cfg =>
3 {
4     cfg.RegisterServicesFromAssembly(typeof(Program).Assembly);
5 });
  • 新建一个Information类
代码语言:javascript
复制
public record Information (string Info) : INotification;
  • 建立一个处理器InformationHandler类
代码语言:javascript
复制
    public class InformationHandler(ILogger<InformationHandler> _logger) : INotificationHandler<Information>
    {
        public Task Handle(Information notification, CancellationToken cancellationToken)
        {
            _logger.LogInformation($"InformationHandler Received: {notification}. {DateTimeOffset.Now}");
            return Task.CompletedTask;
        }
    }
  • 建立一个控制器MediatorController类
代码语言:javascript
复制
    [ApiController]
    [Route("[controller]")]
    public class MediatorController(ILogger<MediatorController> _logger,
            IMediator mediator) : ControllerBase
    {
        [HttpGet(Name = "Test")]
        public string Test()
        {
            var information = new Information("This is a message from controller.");
            mediator.Publish(information);
            _logger.LogInformation($"{DateTimeOffset.Now} : MediatorController Send: {information}.");
            return $"Ok";
        }
    }

OK了,可以运行测试下了,结果如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档