2010-12-06 12 views
45

私はジェネリックリポジトリ<に汎用IRepository <>インターフェイスをバインドしようとしていますが、常にnullを返しますか?私はそれは夢のように動作します非ジェネリックインターフェイスとそのクラスに渡しただし場合Ninject +汎用リポジトリをバインドする

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

は、私のようないろいろなことを試してみましたか?

答えて

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

これは、オープンジェネリックを結合するための正しい構文は次のとおりです。

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

+0

完璧! - はい、あなたは正しいのです。私のリポジトリのコンストラクタはインタフェースに依存しています - 私は今も私のリポジトリで使用されているインタフェースをバインドしています。 - ありがとう。 – ebb

+5

@qes IRepositoryが複数の型引数を取る場合(つまり、IRepository )、構文は何でしょうか。ありがとうございましたhttp://stackoverflow.com/q/6740992/88709 –

2

私の答えはMVC3 Controller constructor + Ninjectです。

一般バインディングはNinjectで正しく機能します。リポジトリでパラメータのないコンストラクタを使用してみてください。私は問題がそこにあると思う。

関連する問題