Autofac MVVM — на весь срок службы

Есть ли примеры использования Autofac в приложении MVVM? Я не уверен, как можно контролировать время жизни и удаление объектов в среде MVVM.

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


person Mark    schedule 17.02.2011    source источник


Ответы (1)


У меня нет общедоступного примера, но я сделал это в приложениях Silverlight.

Для организовать верхний уровень контента. Когда фрейм перешел на новую страницу, я создал область жизненного цикла, в которой я разрешил корневую модель представления страницы, которую я связал со страницей через атрибут:

[ViewModel(typeof(OrdersViewModel))]
public class OrdersView : Page

Когда фрейм переходил на другую страницу, я удалял область жизненного цикла перед созданием следующей.

Тот же шаблон применим к открытию диалогов. Каждое диалоговое окно получает свою собственную область действия и модель представления. Когда он закрывается, область действия уничтожается.

Есть также ситуации, которые не укладываются точно в эти границы. Иногда вам нужно больше детализации, и вы можете углубиться в области жизненного цикла, используя контекстные области действия. Эти ситуации, как правило, единичны и включают в себя некоторый клей, чтобы начать масштабирование жизненного цикла.

Я считаю полезным мыслить с точки зрения единиц работы: вы фиксируете изменения в конце каждого прижизненный размах. Это делает объем набора данных естественной областью действия.

person Bryan Watts    schedule 19.02.2011
comment
Исходный код, доступный по адресу code.google.com/p/whitebox, демонстрирует примерно следующее: использование навигации для обозначения границ единиц работы. Это может быть не очень четкий пример из-за большого количества лишнего шума, но SessionViewModel и ApplicationModule могут дать некоторые подсказки. - person Nicholas Blumhardt; 19.02.2011
comment
Пол Стовелл также опубликовал некоторые начальные подробности о том, как добиться этого с помощью Magellan — надеюсь, в этой серии будет больше :) paulstovell.com/unit-of-work - person Nicholas Blumhardt; 19.02.2011
comment
Спасибо за полезные ответы. Я рассмотрю некоторые из этих вариантов. Между прочим, Whitebox выглядит потрясающе, я просто подумал, что профилировщик IoC был бы очень удобен... - person Mark; 22.02.2011