.NetCore6 + MediatR
一、安装Nuget包
- MediatR 版本 11.0.0
- MediatR.Extensions.Microsoft.DependencyInjection 版本 11.0.0
二、注入MeditorR
【program】
builder.Services.AddControllers();
builder.Services.AddMediatR(Assembly.GetExecutingAssembly());
三、使用mediatR
- 开始添加用户的逻辑处理。(Send)
public class AddUserCommand : IRequest<bool>
{
public string UserName { get; set; }
public string PassWord { get; set; }
}
public class AddUserCommandHandler : IRequestHandler<AddUserCommand, bool>
{
public Task<bool> Handle(AddUserCommand request, CancellationToken cancellationToken)
{
//这里实现添加用户的业务逻辑
Console.WriteLine("开始添加用户处理");
return Task.FromResult(true);
}
}
- 用户添加完成后,使用消息通知,实现下一步操作。(Publish)
public class AddUserCommandSuccess : INotification
{
public string UserName { get; set; }
public string PassWord { get; set; }
}
public class AddUserCommandSuccessQQHandler : INotificationHandler<AddUserCommandSuccess>
{
public Task Handle(AddUserCommandSuccess notification, CancellationToken cancellationToken)
{
//开始下一步操作的用户逻辑
Console.WriteLine($"推送QQ:添加用户成功,用户名是{notification.UserName},密码是{notification.PassWord}");
return Task.CompletedTask;
}
}
四、开始业务调用
public class UserController : ControllerBase
{
private IMediator _mediator;
public UserController(IMediator mediator)
{
_mediator = mediator;
}
[HttpGet("CreateUser")]
public async Task<ActionResult> CreateUser(string userName, string password)
{
bool flag = await _mediator.Send(new AddUserCommand() { UserName = userName, PassWord = password });
if (flag)
{
await _mediator.Publish(new AddUserCommandSuccess() { UserName = userName, PassWord = password });
}
return Ok(flag);
}
}