Unity-Container在什么时候在WPF应用程序中处理它的对象?

时间:2018-03-24 20:58:16

标签: c# mvvm dependency-injection unity-container prism

我使用已知的MVVM设计模式在Prism 6 Library的帮助下使用c#编写了一个WPF应用程序。

我正在使用Unity-Container将依赖项注入到我的对象中,并试图了解这些对象在什么时间点处理。

当应用程序首次启动时,我会注册我的依赖项,例如工作单元,数据库上下文和其他依赖项。

让我感到困惑的是,这些物品会在什么时间点处理。

我试图在实现Dispose()接口的类中的IDisposable方法上设置一个断点,但它似乎永远不会得到调用。我的应用程序将关闭,断点永远不会被调用。

我的申请可以使用" X"右上角的图标,显式使用System.Windows.Application.Current.Shutdown(); Windows重新启动/关闭,或使用任务管理器强制结束任务。

Unity在什么时候处置已注册的依赖项?

另外,当我使用DbContext类和Entity Framework时,在什么时候与数据库的连接是打开的,什么时候关闭?我应该将我的DbConntection和UnitOfWork类注册为singleton或其他一些LifeTimeManager吗?

1 个答案:

答案 0 :(得分:-1)

  

Unity在什么时候处置注册的依赖项?

当您处置容器时,即从不。然后只有使用ContainerControlledLifetimeManager(或HierarchicalLifetimeManager)注册的类型。

Unity会为你创造一些东西,这取决于你使用它做什么以及何时销毁它。

  

在什么时候与数据库的连接是打开的,什么时候关闭?

在需要时创建实例,即直接解析它们或解析需要它们作为依赖项的依赖项或依赖项的类型...