Я снова читаю книгу Марка Симана «Инъекция зависимостей в .NET». В нем он описывает тип адаптера, который используется для представления представления с соответствующей моделью просмотра, но в том же контексте также упоминается, что представление модели представления о представлении (хотя и что-то вроде IWindow) «управляет своей средой оконного типа, например, показывая модальные диалоговых окон ".Имеются ли ссылки на круговые зависимости View/ViewModel?
Было моим опытом, что это нетривиальное нарушение конструкции MVVM и может быть даже плохим решением DI. Большинство подобных «потребностей» часто могут выражаться через комбинацию DataTriggers, сторонних сервисов, шаблонов медиатора, а в некоторых случаях - простые старые события clr. (Стоит отметить, что многие люди предпочитают подвергать eventlike ViewModel элементы через IObserver инъекции Mark Seeman even blogged on this!
Поэтому я задаю вопрос:.. «Вне зависимости от структуры, технологии, языка, стек, или набор инструментов Если MVVM может быть реализован, есть (должно ли когда-нибудь) какая-либо причина, что View Model необходим осознание зрения «
Followup связан вопрос: „? есть ли когда-либо основания для игнорирования этого указания из-за сложности соблюдения шаблона строго“
?
честно говоря, я не думаю, что любой может ответить на этот вопрос на 100%, потому что существует столько мнений, сколько программистов. В частности, я не думаю, что это круговая зависимость, потому что модель просмотра только «осознает» вид через интерфейс, но ничего не знает о реализации. Другое дело - многие люди сходят с ума по поводу этих ДН в эти дни, но я думаю, что это слишком привычно, и похоже, что Грег Янг думает так же http://www.infoq.com/presentations/8-lines-code-refactoring –
Хорошо, это здорово, но этот вопрос очень мало связан с инъекцией зависимости.Кроме того, вопрос заключается в том, чтобы приглашать контрапункты, которые являются именно тем, что может быть ответом на этот вопрос. – Firoso
Как мы знаем, ViewModel - это мост между View и Model. Ваша модель, скорее всего, специфична для домена, а пользовательский интерфейс всегда зависит от технологии. ViewModel шаги здесь и заполнить пробел. поэтому я вижу, что viewmodel и зависимость от просмотра - это более основанная на технологии проблема и основанная на том, какую технологию вы используете, будь то WPF или JS framework, такие как AngularJS. Симен упоминал MVVM как пример того, как мы нарушаем цикл зависимости. Он дает инъекцию свойств в качестве решения. Он позволяет сначала составить граф объекта, а затем ввести значение свойства. –