You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MediatR如何确定调用对应的处理器?

MediatR 是怎么找到对应处理器的?

MediatR 核心靠泛型接口约定 + 依赖注入扫描来完成请求与处理器的匹配,具体逻辑是这样的:

  • 接口约定绑定:你定义的 GetPersonListQuery 肯定实现了 IRequest<List<PersonModel>> 接口,而对应的处理器必须实现 IRequestHandler<GetPersonListQuery, List<PersonModel>>——这个泛型接口就是请求和处理器之间的绑定约定。
  • 启动时扫描注册:在应用启动阶段(比如ASP.NET Core的Program.cs配置DI时),MediatR会通过反射扫描所有程序集,找出所有实现了IRequestHandler<,>的类型,并把它们注册到依赖注入容器中,同时和对应的请求类型(你的Query/Command)建立关联。
  • 运行时动态匹配:当你调用_mediator.Send(new GetPersonListQuery())时,MediatR会根据传入请求对象的具体类型,从DI容器中找到对应的IRequestHandler实现类,实例化后调用它的Handle方法,最终返回处理结果。

至于你在Visual Studio里看到处理器的引用数为0,这完全正常——因为这里没有代码层面的直接硬引用,整个匹配过程是运行时通过反射和DI完成的,编译期不会生成直接的调用关系。

内容的提问来源于stack exchange,提问作者EBDS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:15:41