是否可以使用mediatR处理一个查询但使用不同的处理程序?

时间:2019-09-05 11:30:43

标签: c# ninject mediatr

我正在使用ninject + mediatR。我有从不同接口继承方法的类:

/usr/local/scripts/pscore

,我想使用mediatR处理此查询。我可以做这样的事情吗?

Set-Location

是否可以通过某种方式发送带有mediatR的查询来调用第二个或第三个处理程序,而不是第一个处理程序?

1 个答案:

答案 0 :(得分:1)

这是不可能的,请求是根据具体请求类型分派给处理程序的。您将必须为每个请求创建派生类型:

public class Query1 : Query, interfaceName1, IRequest<IReadOnlyList<QweReportModel>>
public class Query2 : Query, interfaceName2, IRequest<IReadOnlyList<QweReportModel>>

比您的处理程序看起来像:

public class QueryHandler : 
    IRequestHandler<Query, IReadOnlyList<QueryResult>>,
    IRequestHandler<Query1, IReadOnlyList<QweReportModel>>,
    IRequestHandler<Query2, IReadOnlyList<QweReportModel>>

并发送:

mediator.Send<IReadOnlyList<QweReportModel>>(new Query1());
mediator.Send<IReadOnlyList<QweReportModel>>(new Query2());