.net - 消息(不是异常)应如何从模型/业务对象层传递到UI?

标签 .net events mvvm messages

使用VB.net 4.0

我有一个基于MVVM的Winforms应用程序。我正在寻找一种简单的方法来使任何层(甚至是UI没有引用的那些层)将消息传递回UI以便显示给用户。

过去,我是在其他所有程序集都将引用的“通用”程序集中创建“通讯器”类来实现此目的的。

Public Class Communicator

Public Shared Sub NotifyUser(Message as string)
    RaiseEvent SendMessage(Message)
End Sub

Public Shared Event SendMessage(MessageToSend as string)

End Class 

UI将在程序启动时订阅SendMessage事件。任何要传递消息给用户的类都将简单地调用Shared NotifyUser方法,而Communicator类将通过SendMessage事件将给定消息传递给UI。

这种方法的好处在于,它在代码中的任何地方实现起来都很简单,并且 super 易于使用。

我认为这样做的缺点是,对NotifyUser的调用分散在整个代码中,从而使许多类依赖于Communicator类及其共享方法。由于某种原因,这感觉很不对劲。

因此,我的问题是,在不显着增加复杂性的情况下,实现相同效果的一些典型方法是什么?

最佳答案

老实说,事情很好(您指出的不利之处)。另一个选项是Mediator pattern,它听起来差不多已经实现,只是没有事件。

关于.net - 消息(不是异常)应如何从模型/业务对象层传递到UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5625054/

相关文章:

.net - JumpList 和 ClickOnce - 这种组合可能吗?

c# - 没有抽象类的实现接口(interface)?

c# - 打印一个数组的内容(代码为一行,用于visual studio Immediate window)

c# - EF 保存到上下文但不保存到数据源

javascript - activate_page 在 intelXDK 中不起作用

WPF - 在 View 模型中处理来自用户控件的事件

Jquery 点击事件在设备(ipad、iphone ..)中的 li 上不起作用

silverlight - 需要知道用户何时调整窗口大小

c# - MVVM INotifyPropertyChanged 与基类 PropertyChange 冲突

binding - 处理 subview 的父 View 命令怎么办? View 建模会很乏味或不需要?