我一直在看the N=36 tutorial它在 MvvmCross 3.09 中引入了新的 RIO 支持。将 INC
字段和旧式属性组合在同一个类中是否安全?我问这个问题是因为我的一些属性 setter 和 getter 很复杂,因此保留它们原样可能更容易。然而,我现有的绝大多数属性都很简单,因此看起来非常适合该领域。
谢谢 标记
最佳答案
“安全”在这里使用是一个有趣的词 - 我不完全确定它在这种情况下的含义。
我个人认为在同一个项目和同一个 View 模型中混合搭配 INotifyChanged
和 INotifyPropertyChanged
是安全的 - 没有什么结果应该是爆炸,并且 INotifyChanged
的内存和处理速度性能应该与 INotifyPropertyChanged
的性能一样好或更好。
我能想到的唯一潜在的不安全风险领域是:
团队开发和后期代码维护 - 同时使用两种不同的方法可能会让你自己或其他编码员在现在或以后的维护中感到困惑 - 他们会问“我在哪里使用一种方法或另一种方法”是公平的?”和“为什么?”
缺乏“更改全部”支持 -
INotifyPropertyChanged
允许 ViewModel 发送一切都已更改通知 - 他们可以使用null
或空属性名称。INotifyChanged
当前未加入此通知。根据我的经验,这种“全部更改”机制很少使用,并且 Mvvm 开发人员并不熟知 - 因此这里的风险很小。但是,如果有人尝试使用它,那么他们可能会惊讶于INotifyChanged
绑定(bind)字段没有更新。对其他 Mvvm 库的可移植性 - Rio 是 MvvmCross 引入的绑定(bind)机制 - 因此它在其他 Mvvm 平台中尚不可用。如果您曾经移植回 Prism 之类的东西,那么这对您来说可能是一个风险(您可能必须将这些字段重写为属性)
令 Windows 开发人员感到困惑 - 经验丰富的 Xaml 开发人员早在 2005 年就已经习惯使用
INotifyPropertyChanged
- 因此,他们可能会感到困惑,因为必须使用 MvvmCross Xaml Binding Extensions为了获取 Xaml 内绑定(bind)的字段。 (这种困惑对他们来说是好还是坏取决于你的世界观!)
关于mvvmcross - 组合 RIO 字段和属性是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17772471/