如何在WPF MVVM应用程序中组织接口和实现

Ser*_*hei 7 c# architecture wpf mvvm

我正在研究包含以下项目的WPF MVVM项目,

  • 域,
  • 的ViewModels,
  • 基础设施,
  • 查看

例如我需要IFileService提供一些带文件的操作并且不包含任何业务逻辑,我确信这个接口FileService的实现将在Infrastructure项目中,但我有问题放在哪里IFileService接口

我需要在ViewModels项目中使用这个接口,如果我将它放在这个项目中,它意味着基础设施将在ViewModels上引用我认为不好的,如果我将它放在包含业务相关类的域中.

帮助我组织项目之间的结构和引用以及放置接口的最佳位置是IFileService什么?

DHN*_*DHN 4

嗯,为什么不创建一个像DALor 这样的额外项目呢DataLayer?它提供了模型类,我在您的清单中也缺少这些模型类。您也可以将接口放在IFileService那里,尽管我更喜欢使用DataProvidersor Repositories(这是我的首选选项),以便虚拟机不知道数据是从哪里加载的。

恕我直言,该项目Infrastructure不应包含任何复杂的逻辑。我会在那里放置一些有用的方法和类,并使其尽可能简单和干净,以便可以在任何地方引用它。也许,你根本不需要它。