我目前正在使用Sharp Architecture 2.0并且使用它做得非常好。但是我遇到了在Tasks层中执行命令的问题。我有以下与我的命令相关的类:
SaveOptionStep1Command ,它实现了 CommandBase 和
SaveOptionStep1CommandHandler 实现了
的 ICommandHandler< SaveOptionStep1Command> 和
实现 CommandResult
当我创建命令时,我收到以下错误,无法确定问题的来源。
错误
找不到命令类型的命令处理程序: EasyOptions.Tasks.Commands.SaveOptionStep1Command
描述:在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息: SharpArch.Domain.Commands.CommandHandlerNotFoundException:找不到命令类型的命令处理程序:EasyOptions.Tasks.Commands.SaveOptionStep1Command
以下是我的代码的Githubu要点:https://gist.github.com/1314136
答案 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"));
我认为最终会挑选每一个元素。
因此,通过使用第一个版本,问题解决了。
由于