2013-07-25 114 views
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客戶端)。