举个例子:
Bind(typeof(IRepository<>)).To(typeof(Repository<>));
这对 NInject 有效,我的问题是这是否是滥用/反模式。
这样做的问题是您不能拥有 IRepository<> 类型的成员/参数变量,因此拥有此绑定实例的唯一方法是通过具有类型请求的工厂。IE
_kernel.Get(typeof(IRepository<>));
一种可能的探索途径可能是使用动力学;
public Foo(IRepository<dynamic> repository)
{}
至少在这里我们有一个注入的构造函数参数,它遵循控制反转。
我之所以问上述问题,是因为我问了另一个关于开放泛型的问题;在这种情况下,以下...
public Foo(IEnumerable<IRepository<dynamic>> allRepoInstancesInjected)
...似乎应该是可能的。