将Fody.PropertyChanged与MVVMCross一起使用安全吗?或者这会降低应用程序的性能
本文关键字:或者 性能 应用程序 PropertyChanged Fody MVVMCross 一起 安全 | 更新日期: 2023-09-27 18:25:40
今天我在网上读到了一个新的插件,它非常简单易用。
目前我正在使用MVVMCross,我们必须一次又一次地调用RaisePropertyChange(()=>Property)。将Fody.PropertyChanged与MVVMCross一起使用是否安全。任何一个有经验的人我也看了这个使用MVVMCross和Foody.RaisePropertyChange 的例子
https://github.com/slodge/BindingTalk/blob/master/BindingTalk.Droid/ViewModels/FodySimpleViewModel.cs
或者MVVMCross中有什么解决方案可以让我们摆脱一次又一次使用RaisPropertyChange()的
谢谢,
最诚挚的问候
Fody.PropertyChanged不应比手动调用RaisePropertyChanged
慢。Fody.PropertyChanged有效地做的是在编译时为您编写代码。
因此,您不必键入所有那些混乱的RaisePropertyChanged
调用,也不必查看它们,从而使代码更加干净。但是,如果你看看编译的内容(使用ILSpy或类似的程序),你会发现它们都是自动为你添加的。因此,从性能的角度来看,应该没有什么区别,但它使代码更易于编写、阅读和维护。
我是Fody.PropertyChanged的超级粉丝。多年来,我一直在MVVM Light(我相信它与MVVMCross类似)中使用它,但我从未发现它是速度减慢的原因。我绝对建议你试一试。
如果你使用的是版本控制(你应该这样做),那么提交你的项目,安装Fody.PropertyChanged,去掉所有那些RaisePropertyChanged
调用,然后看着神奇的事情发生。如果你不喜欢它,你可以随时回到你以前的版本。
我在我的MvvmCross应用程序中到处使用Fody。模型、视图模型等
[ImplementPropertyChanged]
public class HomeViewModel : BaseViewModel
{
// every property will notify changes
public string Foo { get; set; }
}
[ImplementPropertyChanged]
public class ChatMessage
{
public string Uid { get; set; }
public DateTime? SentAt { get; set; }
public string SenderConnectionId { get; set; }
public string UserName { get; set; }
public string Content { get; set; }
}
注意:如果您将方法绑定添加到混合中,您将摆脱大量的样板代码。我在整个应用程序中不使用任何命令
您可以使用[DoNotNotNotify]属性来排除已注入通知的属性或类型,或者在设置依赖属性时注入要通知的[EdependsOnAttribute] 更多信息:https://github.com/Fody/PropertyChanged