DDD中的UI层依赖性

时间:2014-07-23 14:11:08

标签: c# mvvm domain-driven-design inversion-of-control

我目前的项目是以这种方式组织的:

  • 域层 - >域对象和存储库接口
  • 基础设施 - >存储库实现
  • 应用层 - > MVVM模式中的服务
  • 演示文稿 - >仅访问服务层并使用ViewModels

我正在使用IoC容器(SimpleInjector)。我的服务在构造函数中收到一个IRepository,如:

public CustomerService : ServiceBase
{
   public CustomerService(ICustomerRepository repository, IUnitOfWork<CustomerContext> uow)
   {
     ...
   }
}

我的问题是:

要在服务中注入存储库,我的表示层应该引用域层。可以添加此引用吗?我的表示层不应该仅引用基础结构和应用程序层?

1 个答案:

答案 0 :(得分:2)

是的,没关系。

您需要引用组合根目录中的所有组件(通常位于表示层中)。

我知道一开始感觉有点奇怪,但你需要区分DLL依赖和硬类依赖。如果您的表示层依赖于DLL,那就没关系,当视图依赖于SQL库时(例如)它不行。

我已经写了一篇关于此的博客文章,其中包含更多信息:

http://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/