標準の3層アプリを作成しています。
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を使用してcreate CustomerServiceオブジェクトを呼び出し、ICustomerRepositoryの依存関係を満たします。
class DIModule : NinjectModule
{
public override void Load()
{
Bind<>(ICustomerRepository).To<??????????????>()
}
}
データレイヤーのCustomerRepositoryクラスにバインドするにはどうすればよいですか?これを機能させるには、コンソールアプリからデータレイヤーへの参照を追加する必要がありますか?私は何が間違っているのですか?