我正在研究包含以下项目的WPF MVVM项目,
并且例如我需要IFileService
提供一些文件操作并且不包含任何业务逻辑,我确信这个接口FileService的实现将在Infrastructure项目中,但我有疑问哪里放置IFileService
接口
我需要在ViewModels项目中使用这个接口,如果我将它放在这个项目中,它的意思是基础设施将在ViewModels上引用我认为不好的,如果我将它放在包含业务相关类的域中相同。
帮助我组织项目之间的结构和引用以及放置IFileService
等接口的位置的最佳方法是什么?
答案 0 :(得分:4)
嗯,为什么不创建像DAL
或DataLayer
这样的其他项目?它提供了模型类,我在列表中也缺少这些类。您也可以将接口IFileService
放在那里,但我更喜欢使用DataProviders
或Repositories
(这是我的首选选项),这样VM就无法知道数据的加载位置。
恕我直言项目Infrastructure
不应包含任何软化逻辑。我会在那里放一些有用的方法和类,并尽可能简单和干净,以便它可以在任何地方引用。可能你甚至都不需要它。
答案 1 :(得分:3)
我用于MVVM项目的唯一规则是,所有项目都有一个参考到我的基础设施项目,我的基础设施项目没有参考到我的其他项目。 / p>
因此,IMHO,IFileService和一般的接口应该在Infrastructure项目中。然后由您决定将实施放在何处。基础设施项目通常具有非常基本的逻辑实施,最终实施将进入专门的项目。
我有时会在此规则中添加的唯一例外是当我将开发基于现有的MVVM框架时,然后基础结构也可以引用它,但我会尝试避免这种方法。
答案 2 :(得分:1)
您应该将 IFileService 接口放到Infrastructure项目中。因为这将使每个项目都可用,因为这是核心项目的权利。并且你可能有不同的实现,例如同步文件阅读器和asyncronius文件阅读器。所以实现可以进入你的模块或ViewModels。