将 Fody.PropertyChanged 与 MVVMCross 一起使用安全吗?还是会降低应用程序的性能?
Is it safe to use Fody.PropertyChanged with MVVMCross Or it is down the performance of app?
今天在网上看到一个新的插件Fody.PropertyChanged,非常简单易用。
目前我正在使用 MVVMCross,我们必须一次又一次地调用 Raise属性Change(()=>属性)。将 Fody.PropertyChanged 与 MVVMCross 一起使用是否安全。任何人都有这方面的经验我也看过这个使用 MVVMCross 和 Foody.RaisePropertyChange
的例子
或者 MVVMCross 中是否有任何解决方案可以让我们摆脱一次又一次地使用 Rais属性Change()
谢谢,
此致
Fody.PropertyChanged 不应比手动调用 RaisePropertyChanged
慢。 Fody.PropertyChanged 有效的作用是在编译时为您编写代码。
因此,您不必键入所有那些混乱的 RaisePropertyChanged
调用,也不必查看它们,从而使您的代码更加简洁。但是,如果您查看编译的内容(使用 ILSpy 或类似程序),您会发现它们都是自动添加的。所以,从性能的角度来看,应该没有区别,但是它让你的代码更容易编写,更容易阅读,更容易维护。
我是 Fody.PropertyChanged 的超级粉丝。多年来,我一直将它与 MVVM Light(我认为它与 MVVMCross 类似)一起使用,而且我从未发现它是导致速度下降的原因。我绝对建议你试一试。
如果您正在使用版本控制(您应该使用),请提交您的项目,安装 Fody.PropertyChanged,摆脱所有那些 RaisePropertyChanged
调用,然后观看奇迹发生。如果您不喜欢它,您可以随时返回到之前的版本。
您可以使用 [DoNotNotify] 属性将 属性 或类型排除在注入通知之外,或注入 [DependsOnAttribute] 属性 在设置依赖项 属性 时收到通知。
正如@devuxer 所说,Fody.PropertyChanged 不会降低性能。它不会导致比 RaisePropertyChanged(() => ...) 更多的处理,因为这正是您在编译应用程序时得到的,没有别的。
您可以在 readme file
中确切地看到它是如何工作的
我在我的 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; }
}
注意:如果将 method binding 添加到组合中,您将摆脱大量的样板代码。我没有在整个应用程序中使用单个命令
今天在网上看到一个新的插件Fody.PropertyChanged,非常简单易用。
目前我正在使用 MVVMCross,我们必须一次又一次地调用 Raise属性Change(()=>属性)。将 Fody.PropertyChanged 与 MVVMCross 一起使用是否安全。任何人都有这方面的经验我也看过这个使用 MVVMCross 和 Foody.RaisePropertyChange
的例子或者 MVVMCross 中是否有任何解决方案可以让我们摆脱一次又一次地使用 Rais属性Change()
谢谢,
此致
Fody.PropertyChanged 不应比手动调用 RaisePropertyChanged
慢。 Fody.PropertyChanged 有效的作用是在编译时为您编写代码。
因此,您不必键入所有那些混乱的 RaisePropertyChanged
调用,也不必查看它们,从而使您的代码更加简洁。但是,如果您查看编译的内容(使用 ILSpy 或类似程序),您会发现它们都是自动添加的。所以,从性能的角度来看,应该没有区别,但是它让你的代码更容易编写,更容易阅读,更容易维护。
我是 Fody.PropertyChanged 的超级粉丝。多年来,我一直将它与 MVVM Light(我认为它与 MVVMCross 类似)一起使用,而且我从未发现它是导致速度下降的原因。我绝对建议你试一试。
如果您正在使用版本控制(您应该使用),请提交您的项目,安装 Fody.PropertyChanged,摆脱所有那些 RaisePropertyChanged
调用,然后观看奇迹发生。如果您不喜欢它,您可以随时返回到之前的版本。
您可以使用 [DoNotNotify] 属性将 属性 或类型排除在注入通知之外,或注入 [DependsOnAttribute] 属性 在设置依赖项 属性 时收到通知。
正如@devuxer 所说,Fody.PropertyChanged 不会降低性能。它不会导致比 RaisePropertyChanged(() => ...) 更多的处理,因为这正是您在编译应用程序时得到的,没有别的。 您可以在 readme file
中确切地看到它是如何工作的我在我的 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; }
}
注意:如果将 method binding 添加到组合中,您将摆脱大量的样板代码。我没有在整个应用程序中使用单个命令