Autofac MVVM-生存期

Autofac MVVM-生存期,mvvm,dependency-injection,ioc-container,autofac,Mvvm,Dependency Injection,Ioc Container,Autofac,是否有在MVVM应用程序中使用Autofac的示例?我不确定如何在MVVM环境中控制对象的生命周期和处理 我知道我可以创建一个生命周期并从它下面解析,但这看起来更像是一个服务定位器模式,而不是IoC模式。我没有公开的示例,但我在Silverlight应用程序中做到了这一点 我使用了组织顶级内容的方法。当框架导航到一个新页面时,我创建了一个生存期作用域,在该作用域中我解析了页面的根视图模型,该模型通过一个属性与页面关联: [ViewModel(typeof(OrdersViewModel))] p

是否有在MVVM应用程序中使用Autofac的示例?我不确定如何在MVVM环境中控制对象的生命周期和处理


我知道我可以创建一个生命周期并从它下面解析,但这看起来更像是一个服务定位器模式,而不是IoC模式。

我没有公开的示例,但我在Silverlight应用程序中做到了这一点

我使用了组织顶级内容的方法。当框架导航到一个新页面时,我创建了一个生存期作用域,在该作用域中我解析了页面的根视图模型,该模型通过一个属性与页面关联:

[ViewModel(typeof(OrdersViewModel))]
public class OrdersView : Page
当框架导航到另一个页面时,我在创建下一个页面之前处理了生存期范围

同样的模式也适用于打开对话框。每个对话框都有自己的生存期范围和视图模型。当它关闭时,生命周期范围将被释放

也有一些情况不符合这些界限。有时,您需要更大的粒度,并且可以使用更深入的生命周期范围。这些情况通常是一次性的,需要一些胶水来开始生命周期


我发现这样想很有帮助:在每个生命周期范围结束时提交更改。这使一组数据的定义成为一个自然的生命周期范围。

上的源代码演示了类似的内容—使用导航标记工作单元边界。这可能不是一个很清楚的例子,因为有很多额外的噪音,但是SessionViewModel和ApplicationModule可能会提供一些线索。Paul Stovell还发布了一些关于与Magellan实现这一点的初步细节-希望本系列中会有更多:)感谢您提供的有用答案。我将研究其中的一些选项。顺便说一句,Whitebox看起来棒极了,我只是想一个国际奥委会的档案将非常方便。。。