范围问题

时间:2010-12-09 00:10:08

标签: ioc-container autofac

我正在使用Caliburn和Autofac开发应用程序。我无法理解范围界定和最佳实践。

假设我的主客户窗口显示了客户列表(CustomerViewModel)。此VM生成子VM以编辑单个客户(CustomerEditViewModel)

我希望CustomerViewModel有一个可供所有VM访问的CustomerRepository实例,但每个VM都有自己的本地CustomerRepository。

实现这一目标的最佳方法是什么?我一直在使用构造函数注入,并一直避免在任何地方注入容器。我可以向我的存储库添加一个静态属性,让它可以访问“全局”存储库。我相信使用Autofac有一种更好的方法可以使用生命周期范围(Main,Child等)来实现它,但我不知道如何解决这个问题。

基本上我想要实现的是,当一个子VM通过它的本地存储库将它的记录保存回数据库时,这个更新的实体将被导回到主存储库,避免数据库调用以检索更新的对象

编辑:我想出了各种各样的解决方案。

我现在有一个IMainRepository接口,它是使用InstancePerLifetimeScope()创建的。 CustomRepository采用IMainRepository的实例。现在,CustomerRepository可以与主存储库进行通信,而不需要VM知道。

0 个答案:

没有答案