是否有在MVVM应用程序中使用Autofac的示例?我不确定如何在MVVM环境中控制对象的生命周期和处置。
我知道我可以创建一个生命周期并从它下面解决,但这看起来更像是服务定位器模式而不是IoC模式。
答案 0 :(得分:3)
我没有公开示例,但我已在Silverlight应用程序中完成此操作。
我使用Silverlight navigation framework来整理最高级别的内容。当框架导航到新页面时,我创建了一个生命周期范围,在其中我解析了页面的根视图模型,我通过属性与页面关联:
[ViewModel(typeof(OrdersViewModel))]
public class OrdersView : Page
当框架导航到另一个页面时,我在创建下一个页面之前处理了生命周期范围。
相同的模式适用于打开对话框。每个对话框都有自己的生命周期范围和视图模型。当它关闭时,生命周期范围就会被处理掉。
还有一些情况不会沿着这些边界整齐地落下。有时您需要更多粒度,并且可以使用contextual scopes更深入到生命周期范围。这些情况通常是一次性的,并且涉及一些胶水以开始生命范围。
我认为根据units of work进行思考是有帮助的:您在每个生命周期范围的末尾提交更改。这使得一组数据的extent成为一个自然的生命周期范围。