C# 搭建 MediatR 基本框架

INotificationHandler:INotification 多播消息传输
多播消息传输,也就是一对多的消息传递,一个消息对应多个消息处理。其通过INotification来抽象多播消息,对应的消息处理类型为INotificationHandler。

IRequestHandler:单播消息传输,也就是一对一的消息传递,一个消息对应一个消息处理。其通过IRequest来抽象单播消息,用IRequestHandler进行消息处理。

感兴趣的可以了解下:
MediatR 知多少: https://www.jianshu.com/p/583bcba352ec

  1. 安装MediatR
    通过nuget的ui来安装下面这两个包:
    在这里插入图片描述

2.在Startup类中配置MediatR
下一步,在Startup类中,在ConfigureServices方法中添加如下代码:
在这里插入图片描述

 services.AddMediatR(Assembly.GetExecutingAssembly());

3.实现INotification
定义Class,引用INotification
在这里插入图片描述

public class TESTUser : INotification
{public string Username { get; set; }public string Password { get; set; }
}

创建三个处理程序逐个执行,以完成他们的工作。这些都是从INotificationHandler继承下来的

在这里插入图片描述

public class TESTUserHandler : INotificationHandler
{public Task Handle(TESTUser notification, CancellationToken cancellationToken){//Save to log  Debug.WriteLine(" ****  Save user in database  *****");return Task.FromResult("");}
}public class LogHandler : INotificationHandler
{public Task Handle(TESTUser notification, CancellationToken cancellationToken){//Save to log  Debug.WriteLine(" ****  User save to log  *****");return Task.FromResult("");}
}public class EmailHandler : INotificationHandler
{public Task Handle(TESTUser notification, CancellationToken cancellationToken){//Send email  Debug.WriteLine(" ****  Email sent to user  *****");return Task.FromResult("");}
}

创建Controller引用IMediator实现对应方法,调用Publish方法实现

在这里插入图片描述

[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{private readonly IMediator _mediator;public HomeController(IMediator mediator){_mediator = mediator;}[HttpGet]public ActionResult Register(){TESTUser user = new TESTUser() { Username = "test1", Password = "test2" };_mediator.Publish(user);return RedirectToAction("");}
}
  1. 实现IRequestHandler
    定义Class,引用IRequestHandler,定义返回值
    在这里插入图片描述
public class TESTUser2 : IRequest
{public string Username { get; set; }public string Password { get; set; }
}public class TESTUser2Handler : IRequestHandler
{public Task Handle(TESTUser2 request, CancellationToken cancellationToken){// save to database  return Task.FromResult(true);}
}

创建Controller引用IMediator实现对应方法,调用Send方法实现

在这里插入图片描述

 _mediator.Send(user);

搭建框架参考 ASP.NET Core中使用MediatR实现命令和中介者模式:
https://blog.csdn.net/qin_yu_2010/article/details/83511366

英文原文:https://www.c-sharpcorner.com/article/command-mediator-pattern-in-asp-net-core-using-mediatr2/

源代码下载:https://download.csdn.net/download/u010194236/12673908

.NetCore MVC转换成 .NetCore WebApi:
https://www.cnblogs.com/licm/p/12718604.html

PS:源代码没啥东西能别下就别下拉代码已经都贴到上边了,赠送一张女神图片
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部