摘要

提供者是特殊的工厂类,Ninject使用它来实例化解析类型。任何时候我们绑定一个服务类型到一个组件,我们都隐式地关联那个服务类型到一个可以实例化那个组件的提供者。这个隐藏的提供者被称为StandardProvider,是一个通用的工厂,他可以创建每一个给定类型的实例。尽管我们可以经常依赖StandardProvider而不用对他在背后做了什么费心,Ninject也允许我们创建和注册我们自己自定义的提供者,只要我们需要自定义这个下面的激活过程:

复制代码
1 Bind<IService>().ToProvider<MyService>(); 2 public class MyServiceProvider : Provider<MyService> 3 { 4 protected override MyService CreateInstance(IContext context) 5  { 6 return new MyService(); 7  } 8 }
复制代码

尽管继承这个Provider<T>类是推荐