这应该是一个非常快速的问题。我正在尝试学习CQRS模式,但有一点不清楚。有两个调度程序:用于命令和查询。他们都需要注入DI内核才能获得适当的处理程序。例如:具有依赖注入的CQRS
var handler = _resolver.Resolve<IQueryHandler<TQuery, TResult>>();
是不是违反DI的概念,解决不应该被用来,一切都应该与构造函数/属性注入?
有一个更大的例子:http://www.adamtibi.net/06-2013/implementing-a-cqrs-based-architecture-with-mvc-and-document-db
请看看这个方法:
public void Dispatch<TParameter>(TParameter command) where TParameter : ICommand
{
var handler = _kernel.Get<ICommandHandler<TParameter>>();
handler.Execute(command);
}
我发现在3次不同的页面此解决方案。为什么这样做而不是创建一个将Query映射到QueryHandler的工厂?
http://blog.ploeh.dk/2011/09/19/MessageDispatchingwithoutServiceLocation –
顺便说一句,这是CQS而不是CQRS – MikeSW