Использование VB.net 4.0
У меня есть приложение Winforms, которое свободно основано на MVVM. Я ищу простой способ для любого слоя (даже тех, на которые пользовательский интерфейс не имеет ссылки) передавать сообщения обратно в пользовательский интерфейс для отображения пользователю.
Я достиг этого в прошлом, создав класс «Коммуникатор» в «Общей» сборке, на которую ссылалась бы каждая другая сборка.
Public Class Communicator
Public Shared Sub NotifyUser(Message as string)
RaiseEvent SendMessage(Message)
End Sub
Public Shared Event SendMessage(MessageToSend as string)
End Class
Пользовательский интерфейс будет подписываться на событие SendMessage при запуске программы. Любой класс, желающий передать сообщение пользователю, просто вызовет метод Shared NotifyUser, а класс Communicator передаст данное сообщение в пользовательский интерфейс через событие SendMessage.
Достоинством этого метода является то, что его легко реализовать и он очень прост в использовании из любого места вашего кода.
Полагаю, недостатком этого является то, что вызовы NotifyUser распределяются по всему коду, что делает многие классы зависимыми от класса Communicator и его общего метода. По какой-то причине это просто кажется неправильным.
Итак, мой вопрос: каковы некоторые типичные способы достижения того же эффекта без значительного увеличения сложности?