この例を見てください:
Bind(typeof(IRepository<>)).To(typeof(Repository<>));
これは NInject に有効であり、私の質問は、これが乱用/アンチパターンであるかどうかです。
これに関する問題は、タイプ IRepository<> のメンバー/パラメーター変数を持つことができないため、このバインディングのインスタンスを持つ唯一の方法は、Type 要求を持つファクトリを使用することです。すなわち
_kernel.Get(typeof(IRepository<>));
探索する可能性のある手段の 1 つは、ダイナミクスの使用です。
public Foo(IRepository<dynamic> repository)
{}
少なくともここでは、制御の反転に準拠する、注入されるコンストラクター引数があります。
オープンジェネリックについて私が尋ねた別の質問のために、私は上記を尋ねています。この文脈では、次の...
public Foo(IEnumerable<IRepository<dynamic>> allRepoInstancesInjected)
...可能なはずのようです。