【发布时间】:2014-09-14 18:36:20
【问题描述】:
我目前的项目是这样组织的:
- 域层 -> 域对象和存储库接口
- 基础设施 -> 存储库实现
- 应用层 -> MVVM 模式中的服务
- Presentation -> 仅访问服务层并使用 ViewModels
我正在使用 IoC 容器(SimpleInjector)。我的服务在构造函数中接收到一个 IRepository,例如:
public CustomerService : ServiceBase
{
public CustomerService(ICustomerRepository repository, IUnitOfWork<CustomerContext> uow)
{
...
}
}
我的问题是:
要在服务中注入存储库,我的表示层应该引用域层。可以添加此参考吗?我的表示层不应该只引用基础设施和应用层吗?
【问题讨论】:
-
对于 IoC,您必须引用表示层中的所有层(因为它是 IoC 引导程序配置的唯一有效位置),因为引导程序需要知道具体实现(基础设施/数据访问层)和接口(域层)来绑定它。
标签: c# mvvm domain-driven-design inversion-of-control