【发布时间】:2014-02-20 13:03:21
【问题描述】:
我想实现这种类型的绑定:
interface IService<T>
{
T Get(int id);
}
class StringService : IService<string>
{
public string Get(int id)
{
throw new NotImplementedException();
}
}
kernel.Bind<IService<string>>().To<StringService>();
但它给了我一个错误,我已经看到了如何将 IService 绑定到 ConcreteService,但这不是我想要的。
更新
它抛出Ninject.ActivationException - “错误激活 IService 没有匹配的绑定可用,并且类型不是自绑定的”
【问题讨论】:
-
“它给了我一个错误”。什么错误?编译时?运行?请提供异常详细信息(消息、类型和堆栈跟踪)。
-
可能
StringService类需要为internal或public才能让ninject 能够选择它的“默认构造函数”(无参数构造函数)。因为绑定证书应该是正确的,所以我们一直在使用它。 -
如异常所述,您没有
IService的绑定(您只有IService<string>的绑定!)。那么IService接口是什么?真的是IService<T> : IService吗?
标签: c# .net dependency-injection ninject ioc-container