【发布时间】:2019-10-28 17:21:05
【问题描述】:
我正在开发一个 C# MVVM WPF 应用程序,但在决定是否应该为我的 UI“实时”模型更改通知使用消息中介模式或简单的 INotifyPropertyChanged 时遇到问题。尤其是问题在于,我的模型表示一个包含许多“活动”对象的图形,这些对象都具有不同的视图模型在某些时候会对更改感兴趣的属性。我有大约 3-5 个需要通知模型更改的视图模型处于活动状态。某些更改可能嵌套在模型“孙子”的深处。
我尝试比较两种消息传递技术、中介模式和 INotifyPropertyChanged,并认为中介更适合不同模块/系统之间的更改通知。我的视图模型在初始化时肯定需要模型的初始值,然后再更改通知。在我的情况下,INotifyPropertyChanged 似乎是最佳选择,但我有点怀疑,因为我认为很多 nameof(e.PropertyName) 开关情况不是很优雅。这个问题有更好的替代方案吗?
【问题讨论】:
-
Mediator就是解耦组件。与任何模式一样,它是有代价的,并且会增加一定的复杂性。我同意非常通用的
INotifyPropertyChanged接口不舒服,因为它需要开关。它有不同的用途,首先是由框架(数据绑定引擎)使用的。如果解耦不是问题,我会选择专用的,即命名事件。代码读起来更好,您将消除 switch 语句。最好有一个名为PriceChanged的事件,而不是一个通用的PropertyChanged并过滤Price属性。
标签: c# graph model inotifypropertychanged mediator