2014-02-20 89 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));