【发布时间】:2016-10-18 23:16:19
【问题描述】:
我有一个 WPF 应用程序,它使用 IOC 和带有构造函数注入的根组合模式。 View Model 的构造函数中的大部分参数都是存储库。一些存储库正在使用单例生活方式,因为它们正在缓存内容。所有视图模型都是瞬态的,因为我希望在视图关闭后立即释放内存。
但是,在瞬态视图模型中引用单例存储库会在它们不再使用后将它们全部保存在内存中,从而阻止 IOC 容器释放它们。
有没有一种模式可以在不再使用时释放这些类?我正在考虑在 ViewModel 上实现 IDisposable 并将存储库引用设置为 null,但这听起来不对。
【问题讨论】:
-
引用单例的瞬态很好。这不会导致您的问题。为了避免内存泄漏,您应该为每个 Resolve() 设置一个匹配的 Release()。
-
同意。我连接到视图的关闭事件并释放了我之前正在解析的实例。
标签: c# wpf castle-windsor ioc-container