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

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

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

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

当应用程序第一次启动时,我注册了我的依赖项,比如工作单元、db-context 和其他依赖项。

令我困惑的是这些对象在什么时间点被处理掉。

我绑在Dispose()上放了一个断点实现 IDisposable 的类中的方法接口(interface),但它似乎从来没有接到电话。我的应用程序将关闭并且断点永远不会被调用。

我的应用程序可以使用右上角的“X”图标关闭,明确地使用 System.Windows.Application.Current.Shutdown(); Windows 重新启动/关闭,或使用任务管理器强制任务结束。

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

另外,当我在 Entity Framework 中使用 DbContext 类时,何时打开与数据库的连接,何时关闭?我应该将我的 DbConntection 和 UnitOfWork 类注册为单例或其他 LifeTimeManager 吗?

最佳答案

At what point does Unity dispose the registred dependencies?



当您处置容器时,永远不会。然后只有在 ContainerControlledLifetimeManager 注册的类型(或 HierarchicalLifetimeManager )。

Unity 可以为您创造东西,这取决于您如何使用它以及何时销毁它。

at what point it time is the connection to the database is open and when does it get closed?



实例是在需要时创建的,也就是说,当您直接解析它们或将需要它们的类型解析为依赖项或依赖项的依赖项时...

关于c# - Unity-Container 在什么时间点在 WPF 应用程序中处理它的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49469880/

相关文章:

C#格式化字符串日期

wpf - 如何动态地将 ViewModel 连接到其适当的 View?

wpf - 我还能如何在 View 模型的 View 中触发动画?

dependency-injection - 在 UnityContainer 中注册 NUnit DynamicMock 实例

c# - 以编程方式添加 DeskBand 时出错

c# - 如何在另一个控件的顶部添加自定义控件

c# - 有谁知道一个非常好的 C# 第三方 Treeview 控件

c# - 如何从另一个类引用在 MainWindow 中创建的类实例

java - 我应该给支持 beans 另一个名字而不是类吗?

dependency-injection - "Inversion of Control"、 "Dependency inversion"和 "Decoupling"之间的区别