web-dev-qa-db-ja.com

Ninject + Bind汎用リポジトリ

汎用のIRepository <>インターフェイスを汎用のRepository <>にバインドしようとしていますが、常にnullを返しますか?

私は次のようなさまざまなことを試しました:

Bind(typeof(IRepository<CustomerModel>)).To(typeof(Repository<CustomerModel>)); 
Bind(typeof(IRepository<>)).To(typeof(Repository<>)); 

ただし、非ジェネリックインターフェイスとクラスを渡すと、夢のように機能しますか?

48
ebb
Bind(typeof(IRepository<>)).To(typeof(Repository<>));

これは、オープンジェネリックをバインドするための正しい構文です。

IRepository< of whatever >をリクエストしたときにnullが返された場合は、共有していないコードの領域に他の問題がある可能性があります。

82
quentin-starin

MVC3コントローラーコンストラクター+ Ninject に関する私の回答を参照してください。

Generic BindingはNinjectで正しく機能します。リポジトリでパラメータのないコンストラクタを使用してみてください。問題があると思います。

3
Remo Gloor