我在Windows Phone 8应用程序中使用Caliburn.Micro中的EventAggregator
。
视图模型有很多地方可以实现IHandle<SomeClass>
。
我的问题是,当SomeClass
的对象发布时,即使它们可能不是预期的收件人,也会处理多个类。那么处理这个问题的最佳方法是什么....
设计具有不同名称(但内容基本相同)的消息类,以便视图模型之间的所有通信都是严格的点对点?
或者将一个源属性放在消息类中,以便所有接收者都知道消息的来源,以便可以有条件地处理它?</ p>
答案 0 :(得分:2)
这个问题没有正确或错误的答案。我认为:
System.Threading.Task
中的主动取消进行广播,或者像WPF事件模型中的广播一样,其中每个处理程序都是访问者,并且可以设置事件参数的Handled标志(说SomeClass)为true,以便其他处理程序知道他们不应该再处理它了。此外,名称EventAggregator
通常指出这样一个事实,即最常见的用途是聚合处理程序,即进行广播(至少这是我所看到的)
将WPF事件模型视为一个类比..你提出事件(发布它)但不关心你拥有多少处理程序或者他们正在做什么。