消息(不是例外)应该如何从模型/业务对象层传递到UI?

时间:2011-04-11 17:25:15

标签: .net events mvvm messages

使用VB.net 4.0

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

我过去通过在“Common”程序集中创建一个“Communicator”类来完成此操作,而其他程序集都会引用它。

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。

这种方法的优点在于,从代码中的任何位置实现和超级易用都是微不足道的。

我认为这样做的缺点是对NotifyUser的调用遍布整个代码,使许多类依赖于Communicator类及其共享方法。出于某种原因,它只是感觉不对。

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

1 个答案:

答案 0 :(得分:1)

老实说事件很好(你指出的缺点)。另一个选项是Mediator pattern,它或多或少听起来像你已经实现的,只是没有事件。