объект данных не должен знать, кто его держит, модель представления знает, какие данные он хранит, но я не рекомендую вводить эти данные из-за проблем с гибкостью.

рабатываю приложение WPF с использованием шаблона MVVM. Я использую библиотеку MVVM Light, и я также пытаюсь использовать инжектор зависимостей (я рассматриваю Ninject и Unity).

Я прочитал много статей в блоге, и я не совсем понимаю, как правильно делать так, чтобы мои классы общались друг с другом. В частности, я не знаю, когда использовать инъекцию зависимости, а когда полагаться на модель посредника.

Давайте рассмотрим пример. У меня есть ViewModel, давайте назовем его DataViewModel и класс Data, который предоставляет какие-то данные. Как лучше общаться между ними:

А. Ввести зависимость от DataViewModel с интерфейсом IData? Таким образом, Данные не должны будут полагаться на Messenger, но должны будут предоставить событие, если Данные изменятся, и ViewModel придется подписаться на него.

B. Положитесь на шаблон-посредник (реализованный в MVVM Light as Messenger) и отправляйте сообщения между Model и ViewModel? Таким образом, совсем не обязательно будет использовать Dependency Injection, потому что все общение будет основано на сообщениях.

Кроме того, должны ли мои ViewModel вводить зависимости от других ViewModel, или было бы лучше просто положиться на Messenger? Если первое, будет ли необходимо определять отдельный интерфейс для каждой ViewModel? Я думаю, что определение интерфейса для каждой виртуальной машины будет дополнительной работой, но, возможно, оно того стоит.