0

私は現在、シャープ アーキテクチャ 2.0 を使用しており、かなりうまくいっています。しかし、タスクレイヤーでのコマンドの実行に関する問題が発生しています。コマンドに関連付けられた次のクラスがあります。

CommandBaseを 実装するSaveOptionStep1CommandICommandHandler< SaveOptionStep1Command >を実装するSaveOptionStep1CommandHandlerCommandResultを実装するSaveOptionStep1CommandResult

コマンドを作成すると、次のエラーが発生し、問題の原因を特定できません。

エラー
コマンド タイプのコマンド ハンドラが見つかりません: EasyOptions.Tasks.Commands.SaveOptionStep1Command

説明:現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: SharpArch.Domain.Commands.CommandHandlerNotFoundException: コマンド タイプのコマンド ハンドラーが見つかりません: EasyOptions.Tasks.Commands.SaveOptionStep1Command

ここに私のコードの Github Gist があります: https://gist.github.com/1314136

4

2 に答える 2

0

SharpArch 2.0.4 でも同じ問題がありました。Castle コンポーネントを登録するために ComponentsRegistars.cs で数時間遊んだ後、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 に答える
0

リポジトリを正しく作成していないことがわかりました。インターフェイス IRepositoryWithTypedId を使用してリポジトリにアクセスするのではなく、ClientRepository クラスを使用してリポジトリを作成していました。リポジトリとハンドラーが依存関係の問題なしに Windsor コンテナーに正しく追加されたことを変更すると、. 現在、必要に応じて機能しています。

于 2011-10-26T16:24:30.763 に答える