2011-01-09 7 views
0

私はこのような設定されているベースのリポジトリのグループを持っている...Ninjectの設定 - ジェネリック

Bind<IRepository<SomeObject>>().To<SomeObjectRepository>().WithConstructorArgument("connection", connection); 
Bind<IRepository<SomeOtherObject>>().To<SomeOtherObjectRepository>().WithConstructorArgument("connection", connection); 
//and so on 

これらのリポジトリは単純です - 全体のクラスは、次のようななります。

public class SomeObjectRepository : Repository<SomeObject> 
{ 
    public SomeObjectRepository (string connection) : base(connection) 
    { 
    } 
} 

だから私はちょっとそれはちょっと馬鹿だ、と思ったので、私は、一般的なベースのリポジトリを作成し、これをすべてのそれらのバインディングを置き換えます。もちろん破り、エラーで当たった

Bind(typeof(IRepository<>)).To(typeof(Repository<>)).WithConstructorArgument("connection", connection); 

IRepository {SomeObjectのを}活性化エラー使用コンストラクタを作成するために利用できなかった{T} をリポジトリにIRepository {T}から 結合 実装のインスタンス タイプです。

なぜこれは機能しませんか?

+0

リポジトリの<>実装を提供できますか?特にコンストラクタ。 –

答えて

0

少し遅れますが、IRepositoryをSomeObjectRepositoryにバインドする必要があります。

関連する問題