1
Bind(typeof(IRepository<>)).To(typeof(Repository<>));
这是有效的NInject和我的问题是,这是否是一种滥用/反模式。
问题是你不能拥有一个类型为IRepository <>的成员/参数变量,因此拥有这个绑定实例的唯一方法是通过一个带有Type请求的工厂。即
_kernel.Get(typeof(IRepository<>));
探索的一个可能的途径可能是使用动力学;
public Foo(IRepository<dynamic> repository)
{}
至少在这里我们有一个注入的构造函数参数,它遵守控制反转。
我在问以上是因为another question我问过开放式的泛型;在这方面下面...
public Foo(IEnumerable<IRepository<dynamic>> allRepoInstancesInjected)
...似乎应该是可能的东西。