C# 搭建 MediatR 基本框架
INotificationHandler:INotification 多播消息传输
多播消息传输,也就是一对多的消息传递,一个消息对应多个消息处理。其通过INotification来抽象多播消息,对应的消息处理类型为INotificationHandler。
IRequestHandler:单播消息传输,也就是一对一的消息传递,一个消息对应一个消息处理。其通过IRequest来抽象单播消息,用IRequestHandler进行消息处理。
感兴趣的可以了解下:
MediatR 知多少: https://www.jianshu.com/p/583bcba352ec
- 安装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("");}
}
- 实现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:源代码没啥东西能别下就别下拉代码已经都贴到上边了,赠送一张女神图片

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