0

Prism イベント アグリゲーターでのメッセージのブロードキャストをキャンセルする方法を知っている人はいますか?

かなり標準的なコマンド/イベント メッセージングを実行しようとしています。シーケンス図で説明します。

標準のコマンド/イベント メッセージング アーキテクチャ

ここで、検証を追加したいと思います。検証がコマンドをインターセプトし、適用する有効なコマンドであるかどうかを判断し、そうでない場合はそのブロードキャストをキャンセルする必要があることは理にかなっています。本質的に、これは私が欲しいものです: コマンド検証の可能性がある標準コマンド/イベント メッセージング

の行に沿って何かを行う方法を知っている人はいますか

public class Validator : ISubscribe<ChangePropertyCommand>
  public void Handle(ChangePropertyCommand cmd) {
    if(IsNotValid(cmd))
     _events.Cancel(cmd);
    else
      ...
  }
}

または、使用する別のより良いパターンはありますか?

4

1 に答える 1

0

EventAggregator を拡張するためのかなりの作業がなければ、これは不可能だと思います。これを行う最も簡単な方法は、コマンドを表すイベントのみをバリデーターに処理させることです。コマンドが有効な場合、バリデーターは状態チェンジャーを直接実行するか、状態チェンジャーが処理する新しいタイプのイベントを発生させることによって実行します。もちろん、コマンドが無効な場合は、代わりにキャンセルされたイベントを発生させます。

于 2011-03-03T15:41:50.227 に答える