0

我正在構建一個標準的三層應用程序。Ninject在三層應用程序

1控制檯應用程式前端

2業務邏輯層

3數據層

的主要目的是爲了從數據庫表顯示一些客戶數據。

我試圖按照「.NET中的依賴注入」一書中的指導原則,沒有從控制檯到數據層的引用,也沒有從業務層到數據層。允許在需要時輕鬆交換前端和數據層。

比方說,我在叫的CustomerService業務層服務,它有一個GetCustomers()方法

CustomerService的構造函數採用ICustomerRepository像這樣

public class CustomerService 
{ 
    ICustomerRepository repository; 

    public CustomerService(ICustomerRepository repository) 
    { 
     this.repository = repository; 
    } 

    public ICollection<Customer> GetCustomers() 
    { 
     return repository.GetCustomers(); 
    } 
} 

在數據層我有

public class CustomerRepository : BLL.ICustomerRepository 
{ 
    public ICollection<Customer> GetCustomers() 
    { 
     // get the customers from the db 
     return customers; 
    } 
} 

在控制檯應用程序中,我想調用使用Ninj創建CustomerService對象以滿足ICustomerRepository的依賴。

class DIModule : NinjectModule 
{ 
    public override void Load() 
    { 
     Bind<>(ICustomerRepository).To<??????????????>() 
    } 
} 

如何綁定到數據層CustomerRepository類?我必須將控制檯應用程序的引用添加到數據層才能使用? 我在做什麼錯?

回答

1
Bind<ICustomerRepository>().To<CustomerRepository>(); 
+0

這不需要我的控制檯應用程序引用我的數據層嗎?我想避免這種情況。 – tom 2013-02-09 07:23:02

+0

@tom:IoC只是抽象層。當註冊依賴關係時,您需要爲合同(接口)和服務(實現)提供引用,因此需要引用包含兩者的程序集。那麼你從來不會在任何地方使用混凝土類型。 – abatishchev 2013-02-09 07:29:47

+0

在http://stackoverflow.com/questions/12994507/dependency-injection-does-it-violate-separation-of-concerns中遇到過類似的情緒,還是習慣了DI。謝謝。 – tom 2013-02-09 07:42:26

相關問題