Почему я должен передавать сообщения через метод отправки MessengerInstance в приемник? Модификации, подписанные, что приводит к возможностям утечки памяти (как упоминается автором), и беспокоиться о незарегистрировании и более сложной отладке, когда я могу просто создать публичный метод в модели представления, что является потенциальным приемником и затем вызвать этот публичный метод извне следующим образом: толькоВ чем преимущество MVVM Light Messenger?
ServiceLocator.Current.GetInstance<MyViewModel1>().InitMyViewModel1();
вы не должны использовать в других поиска сервиса ViewModels смотрите здесь: http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/ Кстати, если вы используете мессенджер версия, использующая WeakReferences, тогда вы не должны беспокоиться о утечке памяти. Я не уверен, как реализуется MVVM light messenger. После короткого поиска в Google кажется, что вам не нужно беспокоиться о утечке памяти. – MistyK
Я не считаю аргументы против использования ServiceLocator в других ViewModels очень убедительными, поскольку он служит цели, очень хорошо используемой именно так. – nmrlqa4
Зависимость скрыта. a) Тестирование намного сложнее. b) Это довольно опасно, потому что если вы хотите просто использовать класс VM, который вызывает вызов ServiceLocator внутри, вы столкнетесь с проблемами во время выполнения. Если вы вводите все с помощью конструктора/свойств DI, вы сразу узнаете, когда начнете свое приложение – MistyK