在最新版本的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
这是否意味着Idisposable接口不能在派生自galaSoft.MvvmLight.viewmodelBase的所有viewmodel类中实现(并且清理必须被覆盖)?
如果是,使用不能用于视图模型实例…可能我不明白某事…请澄清…这种清理有什么好处?
谢谢。
解决方法
这个问题是历史的。起初我认为强制所有的虚拟机都是一个很好的主意。但是,Idisposable有一个不同的意图:一旦虚拟机被处理,预计(按照惯例),它将尽快被垃圾回收。在和朋友交谈之后,我意识到强制所有的虚拟机都是Idisposable是错误的。这就是为什么我用ICleanup替换了Idisposable。 ICleanup的目的是提供一种清理VM的方法(例如将状态刷新到持久存储,关闭流等),但不一定会尽快将其垃圾回收。
没有什么可以阻止您使您的虚拟机实现Idisposable。我只是不想在viewmodelBase类中保留这个约束,这就是为什么这个接口将在V4中被删除。
具有ICleanup的好处是可以在viewmodelLocator.Cleanup()的一次调用中清除所有虚拟机。 VM虚拟机开发人员表示,虚拟机应该考虑为虚拟机提供清理方法。
那有意义吗?干杯,洛朗
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。