BLL中DataContracts和模型的依赖注入

时间:2013-07-25 14:37:55

标签: dependency-injection asp.net-web-api tdd unity-container

如果之前有人问过,请道歉。我无法找到类似的问题或发帖。

我有一个Unity作为DI Framework的解决方案。

我最近尝试了解TDD和DI的概念。在我现在真正将事情转移到我的实际应用程序中之前,这应该是最后一个问题。

我理解通过构造函数注入依赖的概念,这就是我的BLL现在的样子:

BLL类称为 CarService ,其中一种方法 GetCarDetails

class CarService
{
   IRepository repository;

   CarService(IRepository repository)
   {
      this.repository = repository;
   }

   CarResponse GetCarDetails(CarRequest request)
   {
       CarResponse carResponse = new CarResponse();

       CarModel car = this.repository.SelectCarById(request.CarId);

       if(car!=null)
       {
           carResponse.Make = car.Make;
           carResponse.Reg = car.Reg;
       }

       return carResponse;

   }

}

使用this question中的Composition Root(CR)建议我正在使用我的WebAPi项目作为CR项目。我希望我的所有项目仅按照该问题和here

中的建议在CR中引用

在上面的示例代码中,我需要在CarService中引用我的DataContracts和Model Project:

CarResponse carResponse = new CarResponse();

CarModel car = this.repository.SelectCarById(request.CarId);

并接受CarRequest作为方法参数。

那可以吗? (这意味着DataContracts和Model项目不仅仅由CR引用,而且还引用CarService)

还是应该通过某种DI技术解决这个问题。如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

让服务层引用合同和模型完全没问题。您不应该为它们使用依赖注入。合同也可以通过服务层和调用此服务的客户端共享(当然,如果它是.NET客户端)。