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

实践:

  • 新建一个net8 WebApi标准项目,选择启用OpenAPI支持和使用控制器;
  • 添加项目引用,<PackageReference Include="MediatR" Version="12.2.0" />
  • 注册服务:

1 // Add services to the container.
2 builder.Services.AddMediatR(cfg =>
3 {
4 cfg.RegisterServicesFromAssembly(typeof(Program).Assembly);
5 });
  • 新建一个Information类

public record Information (string Info) : INotification;
  • 建立一个处理器InformationHandler类

    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类

    [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了,可以运行测试下了,结果如下:

net8实现MediatR小示例C#的更多相关文章

  1. ReactNative新手学习之路06滚动更新ListView数据的小示例

    本节带领大家学习使用ListView 做一个常用的滚动更新数据示例: 知识点: initialListSize={200} 第一次加载多少数据行 onEndReached={this.onEndRea ...

  2. MVC客户端验证的小示例

    MVC客户端验证的小示例 配置客户端验证的可用性: <configuration> <appSettings>  <add key="ClientValidat ...

  3. 【.Net】Socket小示例

    引言 项目中用到了Socket,这里做个控制台小示例记录一下. Client 客户端的Receive用了异步方法,保持长连接,可以随时发送消息和响应服务端的消息,如下 static string Cl ...

  4. CentOS7 安装 RocketMQ 实践和小示例

    CentOS7 安装 RocketMQ 实践和小示例 1.通过 SSH 工具(比如 XShell)连接到 CentOS7 服务器上: 2.进入到 /usr/local 目录中: cd /usr/loc ...

  5. Highcharts入门小示例

    一.创建条形图 1.创建div容器 <div id="container" style="min-width:800px;height:400px"> ...

  6. NHibernate 集合映射基础(第四篇) - 一对一、 一对多、多对多小示例

    映射文件,用于告诉NHibernate数据库里的表.列于.Net程序中的类的关系.因此映射文件的配置非常重要. 一.一对一 NHibernate一对一关系的配置方式使用<one-to-one&g ...

  7. 【python小示例】简易彩票中奖模拟

    咱自己写个彩票程序,成功亏掉3个亿 今天突发奇想,自己设计一个小程序,模拟彩票中奖,看看如果自己有个彩票公司,能挣钱吗?代码如下: # -*- utf-8 -*- """ ...

  8. HTML5自学笔记[ 12 ]canvas绘图小示例之鼠标画线

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. Servlet小示例:jsp页面提交信息Servlet接收并打印输出

    该示例采用doPost方法提交表单,该示例一共包含两个文件. 一个是用来提交用户信息的表单userForm2.jsp,另一个是用来接收参数的Servlet. userForm2.jsp <%@ ...

  10. Spring 小示例

    通过一个简单的示例来初步理解Spring框架 1.创建java工程,导入相应Spring包,放在lib文件夹中 2.接口  IHelloMessage package com.jike.spring. ...

随机推荐

  1. 记录一次BoxedApp Packer脱壳解包的记录

    收到朋友的一个求助,一个硬件配套的上位机软件,无法联系到供应商,没有授权,在新电脑安装后无法使用. 简单的记录下过程 首先打开发过来的软件的目录下,一个配置工具,从图片可以判断,是.net winfo ...

  2. java并发和排序的简单例子(Runnable+TreeSet)

    很多时候并发需要考虑线程安全,但也有很多时候和线程安全毛关系都没有,因为并发最大的作用是并行,线程安全仅仅是并发的一个子话题. 例如常常会用于并发运算,并发i/o. 下文是一个练习笔记. 运行环境:w ...

  3. 一款开源、免费、现代化风格的WPF UI控件库 - ModernWpf

    前言 今天大姚给大家分享一款开源(MIT License).免费.现代化风格的WPF UI控件库:ModernWpf. 项目介绍 ModernWpf是一个开源项目,它为 WPF 提供了一组现代化的控件 ...

  4. .NET 个人博客系统

    前言 之前通过github学习了一个.net core的博客项目,最近也是完成了博客的备案,完善了一下.该项目是传统的MVC项目,可以进行主题的切换,采用Bootstrap进行前台页面的展示,有配套的 ...

  5. nn.Conv2d()中dilation参数的作用

    nn.Conv2d()中dilation参数的作用 下面这张图很好的描述了这个参数的作用 优点: 这样每次进行单次计算时覆盖的面积(感受域)增大,最开始时3*3 = 9 然后是5*5 = 25最后是7 ...

  6. 3568F-Qt工程编译说明

  7. P9120 题解

    暴力容斥复活之路! \(k=1\) 这个你肯定会. \(k=2\) 大的放上去,小的放下来.简单贪心. \(k=3\) 考虑二分答案. 然后考虑判断是否合法. 令当前答案为 \(val\). 首先钦定 ...

  8. Nuxt框架中内置组件详解及使用指南(二)

    title: Nuxt框架中内置组件详解及使用指南(二) date: 2024/7/7 updated: 2024/7/7 author: cmdragon excerpt: 摘要:"本文详 ...

  9. Linux Shell 常用命令 - 02篇

    系列文章: Linux Shell 常用命令 - 01篇 8. shell 中各种括号的作用 参考 https://www.jb51.net/article/123081.htm https://ww ...

  10. JavaSE 计算2个List集合中的交集、差集、并集、去重并集

    VideoOrder.java 重写里面的equals和hashCode方法 class VideoOrder { private int price; private String title; p ...