【问题标题】:Error with Sharp Architecture Tasks Layer: Command handler not found for command typeSharp Architecture Tasks 层出错:找不到命令类型的命令处理程序
【发布时间】:2011-10-25 20:26:14
【问题描述】:

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

SaveOptionStep1Command 实现 CommandBaseSaveOptionStep1CommandHandler 实现了
ICommandHandler
SaveOptionStep1CommandResult 实现 CommandResult

当我创建命令时,我收到以下错误并且无法确定问题出在哪里。

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

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

异常详情: SharpArch.Domain.Commands.CommandHandlerNotFoundException:未找到命令类型的命令处理程序:EasyOptions.Tasks.Commands.SaveOptionStep1Command

这是我的代码的 Github Gist:https://gist.github.com/1314136

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我在使用 SharpArch 2.0.4 时遇到了同样的问题。 花了几个小时使用 ComponentsRegistars.cs 进行 Castle 组件注册后,我发现我需要修改 AddTasksTo 方法。 我的观点是,由于命令主要放在基础设施中,它们取代了旧版本:

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

      我认为最终会选择每一个元素。

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

      谢谢

      【讨论】:

        猜你喜欢
        • 2021-10-28
        • 2016-03-21
        • 2021-11-02
        • 2021-08-01
        • 1970-01-01
        • 2022-01-14
        • 2021-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多