摘要

在前面的章节中,我们看了在单一的绑定条件下Ninject能够处理依赖类型,就是说,每个服务类型只绑定到单一的实现类型。然而,有些情况下我们需要绑定一个抽象服务类型到多个实现,这叫多个绑定。多个绑定有两种情况。第一个是插件模型实现,另一个是上下文绑定。这篇文章介绍插件模型实现,下一篇文章介绍上下文绑定。

附:程序下载

插件模型让一个应用程序获得很强的可扩展性而不用修改源代码。下面的例子,我们将实现一个音乐播放器应用程序,使用解码插件来支持不同的音乐格式。这个应用程序使用两个内置的解码器,也可以添加更多的解码器来扩展我们播放器支持的格式。请注意为了让应用程序尽可能简单,许多复杂的细节将不被实现。

先定义一个解码器接口:

1     public interface ICodec2     {3         string Name { get; }4         bool CanDecode(string extension);5         Stream Decode(Stream inStream);6     }

添加两个解码器类实现解码器接口:

Mp3:

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

 1     public class Mp3Codec : ICodec 2     { 3         public string Name 4         { 5             get 6             { 7                 return "MP3 Audio"; 8    &nb