【发布时间】:2019-09-05 11:30:43
【问题描述】:
我正在使用 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 发送查询来调用第二个或第三个处理程序,而不是第一个?
【问题讨论】:
-
是什么阻止您使用三种不同的查询处理程序?这将尊重单一职责原则,并可直接与 MediatR 一起使用。
-
我之前用过三个处理程序。我一直在寻找改进我的代码并使其更优雅的方法。我为此使用了一个处理程序和一个通用查询。