Sharp Architecture任务层出错:找不到命令类型的命令处理程序

时间:2011-10-25 20:26:14

标签: c# asp.net-mvc-3 cqrs sharp-architecture

我目前正在使用Sharp Architecture 2.0并且使用它做得非常好。但是我遇到了在Tasks层中执行命令的问题。我有以下与我的命令相关的类:

SaveOptionStep1Command ,它实现了 CommandBase SaveOptionStep1CommandHandler 实现了 的 ICommandHandler< SaveOptionStep1Command>
实现 CommandResult

SaveOptionStep1CommandResult

当我创建命令时,我收到以下错误,无法确定问题的来源。

错误
找不到命令类型的命令处理程序: EasyOptions.Tasks.Commands.SaveOptionStep1Command

描述:在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息: SharpArch.Domain.Commands.CommandHandlerNotFoundException:找不到命令类型的命令处理程序:EasyOptions.Tasks.Commands.SaveOptionStep1Command

以下是我的代码的Githubu要点:https://gist.github.com/1314136

2 个答案:

答案 0 :(得分:0)

我发现我正在错误地创建存储库。我使用ClientRepository类创建了我的存储库,而不是使用IRepositoryWithTypedId接口来访问它。一旦我改变了我的存储库和处理程序正确添加到我的Windsor容器没有任何依赖问题。它现在正在我需要它。

答案 1 :(得分:0)

我对SharpArch 2.0.4也有同样的问题。 花了几个小时玩CastleRegistars.cs进行Castle组件注册后,我发现需要修改AddTasksTo方法。 我的观点是,由于Commands主要放在Infrastructure中,因此它们取代旧版本的:

     container.Register(
        AllTypes
            .FromAssemblyNamed("v2.Tasks")
            .Pick().If(t => t.Name.EndsWith("Tasks"))
            .WithService.FirstNonGenericCoreInterface("v2.Domain"));

用这个:

 container.Register(
    AllTypes
        .FromAssemblyNamed("v2.Tasks")
        .Pick()
        .WithService.FirstNonGenericCoreInterface("v2.Domain"));
我认为

最终会挑选每一个元素。

因此,通过使用第一个版本,问题解决了。

由于