7

我正在开发包含以下项目的 WPF MVVM 项目,

  • 领域,
  • 视图模型,
  • 基础设施,
  • 意见

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

我需要在 ViewModels 项目中使用这个接口,如果我把它放在这个项目中,这意味着基础设施将对 ViewModels 有引用,我认为这不是很好,如果我将它放在包含相同业务相关类的 Domain 中。

帮助我组织项目之间的结构和引用以及将接口放在哪里最好IFileService

4

3 回答 3

4

嗯,为什么不创建一个额外的项目,比如DALor DataLayer?它提供了模型类,我在您的列表中也缺少这些类。您也可以将界面放在IFileService那里,尽管我更喜欢使用DataProvidersor Repositories(这是我的首选选项),这样 VM 就不会知道数据是从哪里加载的。

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

于 2013-03-22T11:12:39.333 回答
3

我用于 MVVM 项目的唯一规则是,所有项目都引用了我的基础设施项目,而我的基础设施项目没有引用我的其他项目。

所以恕我直言,IFileService 和一般的接口应该在基础设施项目中。然后由您决定将实现放在哪里。基础设施项目通常具有非常基本的逻辑实现,最终实现进入一个专门的项目。

我有时添加到这条规则的唯一例外是当我基于现有的 MVVM 框架进行开发时,基础设施也可能会引用它,但我会尽量避免这种方法。

于 2013-03-22T13:29:38.510 回答
1

您应该将IFileService接口放入 Infrastructure 项目。因为这将使每个项目都可以使用它,因为这是核心项目。并且您可能有不同的实现,例如同步文件阅读器和异步文件阅读器。所以实现可以进入你的模块或视图模型。

于 2013-03-22T11:14:53.763 回答