摘要
在前面的章節(jié)中,我們看了在單一的綁定條件下Ninject能夠處理依賴類型,就是說,每個服務(wù)類型只綁定到單一的實現(xiàn)類型。然而,有些情況下我們需要綁定一個抽象服務(wù)類型到多個實現(xiàn),這叫多個綁定。多個綁定有兩種情況。第一個是插件模型實現(xiàn),另一個是上下文綁定。這篇文章介紹插件模型實現(xiàn),下一篇文章介紹上下文綁定。
插件模型讓一個應(yīng)用程序獲得很強(qiáng)的可擴(kuò)展性而不用修改源代碼。下面的例子,我們將實現(xiàn)一個音樂播放器應(yīng)用程序,使用解碼插件來支持不同的音樂格式。這個應(yīng)用程序使用兩個內(nèi)置的解碼器,也可以添加更多的解碼器來擴(kuò)展我們播放器支持的格式。請注意為了讓應(yīng)用程序盡可能簡單,許多復(fù)雜的細(xì)節(jié)將不被實現(xiàn)。
先定義一個解碼器接口:
1 public interface ICodec 2 { 3 string Name { get; } 4 bool CanDecode(string extension); 5 Stream Decode(Stream inStream); 6 }
添加兩個解碼器類實現(xiàn)解碼器接口:
Mp3: