不带参数的 CQRS 查询处理程序

bar*_*oma 6 .net c# design-patterns domain-driven-design cqrs

public interface IQueryHandler<in TQuery, out TResult>
    where TQuery : IQuery<TResult>
{
    TResult Handle(TQuery query);
}
Run Code Online (Sandbox Code Playgroud)

这是一个查询处理程序接口,需要一个参数来执行查询。

public class PlaceByIdHandler : IQueryHandler<PlaceById, PlaceModel>
{
    ...........

    public PlaceModel Execute(PlaceById query)
    {
        return repository.Query<PlaceModel>("select * from places where id="+ query.id);
    }
}
Run Code Online (Sandbox Code Playgroud)

但有些查询不需要参数。例如获取所有地点:

public class PlaceAllHandler : IQueryHandler<PlaceAll, PlaceModel>
{
    ..........

    public PlaceModel Execute(PlaceAll query)
    {
        return return repository.Query<PlaceModel>("select * from places");
    }
}
Run Code Online (Sandbox Code Playgroud)

但现在 PlaceAll 是一个没有 Member 的类。

public class PlaceAll{}
Run Code Online (Sandbox Code Playgroud)

这是真正的方法吗?有订单吗?

Sam*_*der 0

恕我直言,这很好。如果类的类型足以满足处理程序的要求,则不要向其添加任何参数,只需按原样使用该类即可。无论如何,您会添加哪些参数?

我不确定你所说的“有订单吗”是什么意思