var result2 =await mediator.Send(new GetInfoQuery2(18,"wyy",DateTime.Now));

文章插图
我们写了一个GetInfoQuery2,下面有两个类都在泛型里实现了,可以看到程序是只执行了GetInfoQuery2_2Handller就可以看出IRequest命令类跟处理类失忆对一的关系 。我们只是通过Mediator的send将GetInfoQuery2 作为参数传进去程序就能执行到GetInfoQuery2_2Handller里面的Handle方法这就是MediatR的好处 。
/// <summary> /// 命令处理类-----继承RequestHandler 实现抽象方法 Handle /// </summary> internal class GetInfoQuery3Handller : RequestHandler<GetInfoQuery3, Result> { protected override Result Handle(GetInfoQuery3 request) { Console.WriteLine("GetInfoQuery3Handller"); return new Result(); } }这样写也可以调用到,这就是上面写的 继承不同的类或者接口,一般大多数我都是继承IRequestHandler 。
6、INotification栗子这里我新建了一个Core6.0的WebAPI的工程来演示INotification的运用 。同样的nuget安装MediatR与扩展包MediatR.Extensions.Microsoft.DependencyInjection 。在Program.cs里添加 。这里如果你的命令处理类跟项目在同一个程序集里面就用第二个也可以,如果你是分开的另外建了一个类库写命令查询的直接引用里面随便一个类获取程序集就可以了
//获取该类下的程序集builder.Services.AddMediatR(typeof(Program).Assembly);//获取当前程序集//builder.Services.AddMediatR(Assembly.GetExecutingAssembly()); 这里我们注册了处理多个事件、每个都执行到了 。
using MediatApi.Helper;using MediatApi.Model;using MediatR;using Newtonsoft.Json;namespace MediatApi.Application.Command{ /// <summary> /// 创建订单 /// </summary> public class OrderCreateCommand:INotification { /// <summary> /// Id /// </summary> public long Id { get; set; } /// <summary> /// 订单号 /// </summary> public string? OrderNum { get; set; } /// <summary> /// 订单类型 /// </summary> public string? OrderType { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTime? CreatTime { get; set; } } /// <summary> /// 创建订单处理1 /// </summary> public class OrderCreateCommandHandler : INotificationHandler<OrderCreateCommand> { public Task Handle(OrderCreateCommand notification, CancellationToken cancellationToken) { Order model = new(notification.Id, notification.OrderNum, notification.OrderType, notification.CreatTime); //数据库操作省略 Result ret = new() { Code=200, Message="", Data=https://www.huyubaike.com/biancheng/model }; string retJson=JsonConvert.SerializeObject(ret); Console.WriteLine("11111——————————————订单创建啦!"); return Task.FromResult(retJson); } } ///
经验总结扩展阅读
- 常用Python库整理
- 2023年1月24日建造寺庙好吗 2023年1月24日建造寺庙行吗
- 中式装修风格怎么搭配更好看 中式风格装修注意事项有哪些
- 2023年1月24日修筑堤坝好吗 2023年1月24日是修筑堤坝的黄道吉日吗
- 2023年1月24日粉刷墙壁好吗 2023年1月24日是粉刷墙壁的黄道吉日吗
- 2023年1月24日厨房移位好吗 2023年1月24日厨房移位行吗
- 加拿大高中排名 加拿大高中排名
- 2023中秋祝福语送客户
- 2023中秋祝福语送领导
- 2023送给领导的中秋祝福语