gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:52:50 24 4
gpt4 key购买 nike

在最新版本的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com