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

亚历山大·格罗舍夫(Alexander Groshev)

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

class Query : IRequest<IReadOnlyList<QueryResult>>, interfaceName1, interfaceName2
{
    public string methodFromFirstInterface();
    public string methodFromSecondInterface();
}

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

public class QueryHandler : IRequestHandler<Query, IReadOnlyList<QueryResult>>
{
    //first handler 
    public IReadOnlyList<QueryResult> Handle(Query message)
    {
        //something
    }
    //second handler 
    public IReadOnlyList<QweReportModel> Handle(interfaceName1 message)
    {
        message.methodFromFirstInterface();
    }

    //third handler 
    public IReadOnlyList<QweReportModel> Handle(interfaceName2 message)
    {
        message.methodFromSecondInterface();
    }
}

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

扬·蒙辛斯基

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

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());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用一个使用不同表参数的触发器吗?

一个进程的不同线程可以使用更多处理器吗?

是否可以在同一个着色器程序中使用不同的顶点阵列对象?

是否可以使用多重处理对一个h5py文件进行并行读取?

通过使用不同的选择器选择一个元素,从而为一个元素提供多个事件处理程序

如何使用同一个父对象处理不同的事件处理程序?

是否可以使用一个应用程序发送具有不同侦听连接字符串的通知?

在c中是否有一种干净的方法可以使一个函数使用不同的参数调用其他函数?

如何在一个类中存储一个完成处理程序,以便所有方法都可以使用它?

DevOps 2019 Office Integration是否可以使用一个Excel文件,其中每个工作表都与一个不同的wiql查询相关?

Spring Cloud Contracts可以使用不同的返回http状态代码处理重复的请求吗?

处理的python 是固定在一个CPU 上,还是可以使用多个CPU 超时?

JQuery 延迟了一个事件以使用`click` 事件处理程序检索 DOM 对象

setState“TypeError:无法读取未定义的属性‘值’”当使用不同的输入和一个 onChange 处理程序时

创建一个文件名,每个人都可以使用不同的路径

是否可以使用ImageMagick将不同的图像混合到一个图像中?

在Terraform中,是否可以使用不同的模块提供程序?

是否有一个子查询可以使用同一表中不同列的最大日期来计算datediff?

是否可以使用Powershell或批处理文件将文件夹中的每个文件重命名为另一个名称?

我可以使用多处理来使用 sqlalchemy 查询不同的服务器吗?

React.js:使用一个onChange处理程序识别不同的输入

是否可以使用不同 typeNum 的排版覆盖模板?

在Lotus Notes中是否可以使用一种全局(针对文档)错误处理程序?

使用多个查询而不是一个查询是否“可以”?

是否有 htaccess 规则可以使用其他参数在另一个相同的 url 上使用不同的参数重定向两个相同的 url?

使用一个唯一值更新查询,另一个使用不同值更新查询

是否可以将使用不同 WHERE 子句和 LIMIT 的多个 SQL 语句组合成一个语句?

是否可以使用一个表列的值作为更多查询列生成更多表的 MYSQL 查询?

如何对多个对象使用一个处理程序?