我一直在使用MediatR,在我当前的项目中取得了很大的成功。使用mediator pipeline解决跨领域问题的想法非常好。
我没有得到的一件事(可能原因是我缺乏对c#covariance/contravariance的曝光)是我如何处理单个处理程序中的所有传入请求?我想在执行请求之前执行操作,无论其类型如何:
IRequest
或
IRequest<Foo>
我得到了Jimmy关于PreRequestHandler的说法但是我无法为所有请求实现单一的请求,因为它们总是被键入(我可以为我所拥有的每个IRequest实现一个IPreRequest,但这听起来不对) ....
有什么想法吗?
答案 0 :(得分:0)
以下是我如何使用Castle Windsor和Mediatr(让我们说我们想要记录并授权对每个处理程序的调用)。看看我做的主旨:Decorator unit test
请注意,在使用容器注册处理程序时(在我的情况下使用Castle Windsor),您需要按正确的顺序注册它们(至少在Windsor,YMMV)。
另外,请注意我在注册组件时进行排除(对于装饰器,注册除了其他装饰器处理程序之外的所有具体类型。)