如果之前有人问过,请道歉。我无法找到类似的问题或发帖。
我有一个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技术解决这个问题。如果是这样,怎么样?
答案 0 :(得分:1)
让服务层引用合同和模型完全没问题。您不应该为它们使用依赖注入。合同也可以通过服务层和调用此服务的客户端共享(当然,如果它是.NET客户端)。