0

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

实现CommandBaseSaveOptionStep1Command和实现ICommandHandler< SaveOptionStep1Command >SaveOptionStep1CommandHandler 和实现CommandResult的SaveOptionStep1CommandResult

创建命令时,我收到以下错误并且无法确定问题来自何处。

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

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

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

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

4

2 回答 2

0

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

于 2011-10-26T16:24:30.763 回答
0

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

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

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

谢谢

于 2013-05-27T18:58:41.600 回答