2011-01-09 66 views
0

我曾經使用Castle作爲IoC,但是我在同一個項目中使用Nhibernate/Castle(IoC)出現問題,所以我搬到了Ninject。現在去的問題,我有這個類:Ninject和配置

class CustomModule : NinjectModule 
{ 
    public override void Load() 
    { 
     Bind<Interfaces.ICafe>().To <Concrete.Tea>(); 
    } 
} 

Concrete是一個單獨的項目和Interfaces.ICafe是不同的項目。有了Castle,我曾經給開發人員一個接口DLL,並要求他實現一個新的具體實現接口,然後用app.config配置它,所以不管他實現了什麼類名,它仍然可行,因爲他必須寫入app.config,所以如果他使它像Concrete.Coffee它仍然工作。

但是與Ninject,他必須使具有相同類名「茶」,以使其工作,否則它將無法工作,因爲它是硬編碼的具體。

我是Ninject的新手,我知道這可能是我錯過的東西?

回答

1

將IoC綁定轉換爲代碼並從XML中移出,總有一種趨勢(無論如何我都知道或遵循的人)。大多數情況下,您可以獲得智能感知和運行時反饋。所以,是的,如果你要這樣做,你必須有一個參考Concrete.Tea。

1

如果您想避免引用具體實現,可以使用約定擴展在運行時加載實現。

-Ian

+0

你能提供我的樣品嗎? – Stacker 2011-01-09 16:35:39