Отменить сообщение с помощью агрегатора событий Prism или любого другого шаблона для перехвата команд? - PullRequest
0 голосов
/ 01 марта 2011

Кто-нибудь знает способ отменить дальнейшую рассылку сообщения в агрегаторе событий Prism?

Я пытаюсь сделать довольно стандартный обмен сообщениями о командах / событиях - позвольте мне объяснить диаграмму последовательности:

Standard command/event messaging architecture

Теперь я хочу добавить в проверку,Имеет смысл, что валидация должна перехватить команду, определить, является ли она действительной командой для применения, и если нет, отменить ее трансляцию.По сути, это то, что я хочу: Standard command/event messaging with the possibility of command validation

Кто-нибудь знает, как сделать что-то вроде

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

Или есть другой лучший шаблон для использования?

1 Ответ

0 голосов
/ 03 марта 2011

Я подозреваю, что это невозможно без значительных усилий по расширению EventAggregator. Мне кажется, что самый простой способ сделать это состоит в том, чтобы ваш валидатор обрабатывал только событие, представляющее команду. Если команда действительна, то валидатор выполняет программу изменения состояния либо напрямую, либо путем вызова события нового типа, которое обрабатывает устройство изменения состояния. Конечно, если команда недействительна, вы вместо этого поднимаете отмененное событие.

...