2014-02-20 51 views
0

我要实现这种类型的结合:Ninject绑定通用的具体类型

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没有匹配的绑定是可用的,并且类型不是自绑定”

+2

“它给了我一个错误”。什么错误?编译时?运行?异常详细信息(消息,类型和堆栈跟踪)。 – Steven

+0

这可能是'StringService'类需要是'internal'或'public'才可以接受它的“默认构造函数”(无参数构造函数)。因为绑定证书应该是正确的,所以我们一直在使用它。 – BatteryBackupUnit

+0

作为例外状态,您没有'IService'的绑定(您只有一个用于'IService '!)。那么'IService'界面是什么?它实际上是'IService :IService'? – BatteryBackupUnit

回答

1

试试这个:

kernel.Bind(typeof(IService<string>)).To(typeof(StringService));