最近有人建议我在 API 控制器中使用 MediatR 进行封装。
我只是想知道它如何知道与哪个处理程序通信以及何时通信?
我检查了 IDE 中的处理程序,它们似乎没有在任何地方使用或引用
MediatR 需要使用如下方式在 ServiceCollection 上注册:
services.AddMediatR(cfg =>
cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly));
如果你看一下那里实际发生的情况(请参阅此处的源代码),你将看到中介器找到其自己域的接口的每个具体实现(IRequestHandler、IRequestHandler、INotificationHandler 等)并注册它去收藏吧。
最后,当您调用它时,它知道要调用什么。