Ninject在三层应用程序中

时间:2013-02-09 07:13:01

标签: c# dependency-injection inversion-of-control ninject n-tier-architecture

我正在构建一个标准的三层应用程序。

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;
    }
}

在控制台应用程序中,我想使用Ninject调用创建CustomerService对象来实现ICustomerRepository依赖项。

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

如何绑定数据层CustomerRepository类?我必须从控制台应用程序添加一个引用到数据层才能使用它? 我做错了什么?

1 个答案:

答案 0 :(得分:1)

Bind<ICustomerRepository>().To<CustomerRepository>();