src/sample/XXX.Plugin.MediatR/Controller/MediatRDemoController.cs
(完整代码) 1KBusing MediatR;
using XXX.Plugin.MediatR.Model;
namespace XXX.Plugin.MediatR.Controllers
{
/// <summary>
/// MediatR进程内发布订阅、请求响应模式的示例
/// </summary>
[ApiController]
[Route("[controller]")]
public class MediatRDemoController : ControllerBase
{
private readonly IHostEnvironment _hostEnvironment;
private readonly ILogger<MediatRDemoController> _logger;
private readonly IMediator _mediator;
/// <summary>
///
/// </summary>
/// <param name="hostEnvironment"></param>
/// <param name="logger"></param>
/// <param name="mediator"></param>
public MediatRDemoController(IHostEnvironment hostEnvironment
, ILogger<MediatRDemoController> logger
, IMediator mediator
)
{
_hostEnvironment = hostEnvironment;
_logger = logger;
_mediator = mediator;
}
/// <summary>
/// 发布订阅(通知)模式
/// 场景:数据更改后,通知订阅此数据变化事件的地方进行处理
/// </summary>
[HttpPost("Publish")]
[ProducesResponseType(200, Type = typeof(ResponseResult))]
public IActionResult Publish()
{
//https://ardalis.com/using-mediatr-in-aspnet-core-apps/
_mediator.Publish(new MediatorEvent("Hello World"));
return Ok();
}
/// <summary>
/// 请求响应模式
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("Send")]
[ProducesResponseType(200, Type = typeof(ResponseResult))]
public async Task<IActionResult> Send([FromBody] SendRequestModel request)
{
var result = await _mediator.Send<string>(request);
return Ok(result);
}
}
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。