我目前的项目是以这种方式组织的:
我正在使用IoC容器(SimpleInjector)。我的服务在构造函数中收到一个IRepository,如:
public CustomerService : ServiceBase
{
public CustomerService(ICustomerRepository repository, IUnitOfWork<CustomerContext> uow)
{
...
}
}
我的问题是:
要在服务中注入存储库,我的表示层应该引用域层。可以添加此引用吗?我的表示层不应该仅引用基础结构和应用程序层?
答案 0 :(得分:2)
是的,没关系。
您需要引用组合根目录中的所有组件(通常位于表示层中)。
我知道一开始感觉有点奇怪,但你需要区分DLL依赖和硬类依赖。如果您的表示层依赖于DLL,那就没关系,当视图依赖于SQL库时(例如)它不行。
我已经写了一篇关于此的博客文章,其中包含更多信息:
http://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/