c# - 域、DTO 和 MVVM 模型 (WPF) - 将 INotifyPropertyChanged 放在哪里?
问题描述
我需要使用 MVVM 模式创建 WPF 应用程序作为我的解决方案的一层。
解决方案有:Domain、DAL(返回 Domain 对象)、DTO、BLL(返回 DTO 对象)。
问题是,要实现 MVVM 模式,在我看来,我必须在 WPF 项目中复制我的域模型,以便我可以在它们上实现 INotifyPropertyChanged 接口?然后我还必须将这些模型映射到 DTO 以便我可以使用 BLL 服务?
解决方案
ViewModel 旨在与 View 一起使用,因此它们并不总是与域对象进行 1-1 映射。
- 有时视图需要显示来自多个域对象的数据。
- 有时视图只需要来自域对象的一些数据。
- 有时,视图需要仅与视图相关的数据(例如选定项)。
因此,如何将数据填充到 ViewModel 中的问题可能很复杂。大多数时候我只是跳过 DTO 并让 ViewModel 自己获取数据。或者,如果这不可能,让 DAL 尝试填充 ViewModel,就好像它是 DTO。这实际上取决于其他应用程序基础架构的工作方式。一般来说,我尽量减少层数。理想情况下,我让我的 ViewModel 尽可能直接地获取它需要的数据。
推荐阅读
- javascript - 如何禁用指针事件,但允许拖动
- c# - Web API 更新的令牌认证
- angular - Akita Collection Service 中的 SyncCollection 太贵了?
- javascript - 将 JSON 从 PHP 发送到 Javascript(未定义)
- scala - Scala 中协变 HashMap 的替代方案
- reactjs - 在 foreach 循环中从导入文件中获取函数
- android - 使用套接字时 Kotlin 中的 android.os.NetworkOnMainThreadException
- ruby-on-rails - 看来我的提交按钮不起作用。可能是什么问题呢?
- python - 使用 str.contains 后合并两个数据框?
- flutter - Flutter 调味移动应用和 Flutter web