1

以前曾询问过这种情况的道歉。我无法找到类似的问题或帖子。BLL中的数据合同和模型的依赖注入

我有一个统一的DI框架的解决方案。

我已经非常最近试图理解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中的组合根(CR)建议我正在使用我的WebAPi项目作为CR项目。我希望我的所有项目将只在CR称为在这个问题建议和here

如何以往在上面的示例代码,我需要有一个参考我的DataContracts和示范项目CarService做:

CarResponse carResponse = new CarResponse(); 

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

并接受CarRequest作为方法参数。

那是好做吗? (这将意味着DataContracts和示范项目不受CR,但也CarService只是参考)

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

回答

1

这是完全正常的有合同和模型由服务层被引用。你不应该为他们使用依赖注入。合同也可以由服务层和调用此服务的客户端共享(如果它是.NET客户端)。