【发布时间】:2011-06-29 09:30:02
【问题描述】:
有没有在 MVVM 应用程序中使用 Autofac 的示例?我不确定如何在 MVVM 环境中控制对象的生命周期和处置。
我知道我可以创建一个生命周期并从它下面解析,但这看起来更像是服务定位器模式而不是 IoC 模式。
【问题讨论】:
标签: mvvm dependency-injection ioc-container autofac
有没有在 MVVM 应用程序中使用 Autofac 的示例?我不确定如何在 MVVM 环境中控制对象的生命周期和处置。
我知道我可以创建一个生命周期并从它下面解析,但这看起来更像是服务定位器模式而不是 IoC 模式。
【问题讨论】:
标签: mvvm dependency-injection ioc-container autofac
我没有公开的示例,但我已经在 Silverlight 应用程序中这样做了。
我使用Silverlight navigation framework 来组织顶级内容。当框架导航到新页面时,我创建了一个生命周期范围,我在其中解析了页面的根视图模型,我通过一个属性与页面相关联:
[ViewModel(typeof(OrdersViewModel))]
public class OrdersView : Page
当框架导航到不同的页面时,我在创建下一个之前处置了生命周期范围。
同样的模式适用于打开对话框。每个对话框都有自己的生命周期范围和视图模型。当它关闭时,生命周期范围被释放。
还有一些情况并不完全符合这些界限。有时您需要更多粒度,并且可以使用contextual scopes 更深入地了解生命周期范围。这些情况通常是一次性的,并且需要一些胶水来开始生命周期范围。
我发现从units of work 的角度进行思考很有帮助:您在每个生命周期范围结束时提交更改。这使得一组数据的extent 成为一个自然的生命周期范围。
【讨论】: