使用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/