.net - MVVM-light 中的清理与处置( bool )

标签 .net silverlight mvvm mvvm-light

在最新版本的 MVVM-light (V3 SP1) 中,ViewModel 类中的“Dispose()”和“Dispose(bool)”方法都被标记了

Do not use this method anymore, it will be removed in a future version. Use ICleanup.Cleanup() instead



这是否意味着不能在派生自 GalaSoft.MvvmLight.ViewModelBase 的所有 ViewModel 类中实现 IDisposable 接口(interface)(并且必须覆盖清理)?

如果是,则 using 不能用于 View 模型实例...可能我不明白某些东西...请澄清...这种清理有什么好处?

谢谢。

最佳答案

这个问题是历史性的。起初我认为强制所有虚拟机为 IDisposable 是个好主意。但是,IDisposable 有一个不同的意图:一旦 VM 被释放,预计(按照惯例)它将尽快被垃圾收集。与 friend 交谈后,我意识到强制所有 VM 为 IDisposable 是错误的。这就是我用 ICleanup 替换 IDisposable 的原因。 ICleanup 的目的是提供一种清理 VM 的方法(例如,将它们的状态刷新到持久存储、关闭流等......),但不一定以尽快将它们作为垃圾收集的方式。

没有什么能阻止你让你的虚拟机实现 IDisposable。我只是不想在 ViewModelBase 类中保留这个约束,这就是为什么这个接口(interface)将在 V4 中删除。

拥有 ICleanup 的好处是您可以在一次调用 ViewModelLocator.Cleanup() 中清理所有 VM。这是对 VM 开发人员的一个提示,即 VM 应该考虑为其 VM 提供清理方法。

那有意义吗?
干杯,
洛朗

关于.net - MVVM-light 中的清理与处置( bool ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2963151/

相关文章:

c# - Windows Phone 8.1后台任务无法注册后台任务

c# - 为什么 WPF/MVVM 应用程序中没有触发事件?

.net - 调用 .Net exe 的 main() 函数的含义

c# - 套接字服务器在一段时间后停止接受连接

.net - Silverlight 作为业务应用程序的前端

c# - 如果模型实现了 INotifyPropertyChanged,ViewModel 应该如何注册/注销 PropertyChanged 事件?

c# - 为什么wpf控件只有一个命令? (MVVM)

.net - HashSet 是否保留插入顺序?

.net - 我们可以构造一个 `OpCode` 的实例吗?

c# - 在不访问 UI 线程的情况下在 BackgroundWorker 中获取 "UnauthorizedAccessException"