使用Prism Event Aggregator或任何其他模式取消消息以拦截命令?

时间:2011-03-01 17:19:41

标签: c# prism messaging cqrs eventaggregator

有没有人知道取消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 :(得分:0)

我怀疑如果没有相当多的工作来扩展EventAggregator,这是不可能的。在我看来,最简单的方法是让验证器处理代表命令的事件。如果命令有效,则验证器直接或通过引发状态转换器处理的新类型的事件来执行状态转换器。当然,如果命令无效,则改为取消已取消的事件。