我一直在关注the N=36 tutorial,它在MvvmCross 3.09中引入了新的RIO支持。将INC
字段和旧学校属性组合在同一个班级中是否安全?我问,因为我的一些属性制定者和吸气剂很复杂,所以可能更容易让它们保持原样。然而,我现有的绝大多数属性都很简单,因此非常适合领域。
由于 马克
答案 0 :(得分:2)
'safe'是一个在这里使用的有趣的词 - 我不完全确定它在这种情况下意味着什么。
我个人认为在同一个项目和同一个视图模型中混合搭配INotifyChanged
和INotifyPropertyChanged
是安全 - 没有什么应该去 bang 因此INotifyChanged
的内存和处理速度性能应该与INotifyPropertyChanged
的性能一样好或更好。
我能想到的不安全风险的唯一潜在领域是:
团队开发和后来的代码维护 - 将两种不同的方法结合在一起可能会使您自己或其他编码人员现在或以后在维护中感到困惑 - 他们会问“我在哪里使用一种方法或另一种方法”是公平的?”和“为什么?”
缺少“全部更改”支持 - INotifyPropertyChanged
允许ViewModels发送所有内容已更改通知 - 他们可以使用null
或空属性执行此操作名称。 INotifyChanged
目前尚未加入此通知。根据我的经验,这种“全部改变”机制很少使用,并且Mvvm开发人员并不为人所熟知 - 因此这里的风险很小。但是,如果有人尝试使用它,那么他们可能会对INotifyChanged
绑定字段未更新感到惊讶。
可移植到其他Mvvm库 - Rio是MvvmCross引入的绑定机制 - 因此它尚未在其他Mvvm平台上提供。如果你曾经回到像Prism这样的东西,那么这可能对你构成风险(你可能不得不将这些字段重写为属性)
让Windows开发人员感到困惑 - 经验丰富的Xaml开发人员已经习惯于使用INotifyPropertyChanged
一直回到2005年 - 因此可能会混淆他们必须使用MvvmCross Xaml Binding Extensions才能获得Xaml中绑定的字段。 (这种混乱对他们来说是好还是坏取决于你的世界观!)