映射到常量值。
例如,当您需要解析一个automapper IMapper实例时,就会发生这种情况。在Ninject中的示例如下:
var config = new MapperConfiguration( cfg => {
cfg.AddProfile( new MyMapperConfiguration() );
} );
Bind<MapperConfiguration>().ToConstant( config ).InSingletonScope();
Bind<IMapper>().ToConstant( config.CreateMapper() );
根据注入类型绑定不同的实现
当一组公共类依赖于一个公共接口,但具体实现应该是不同的时,就会出现这种情况。例如:
public interface ICardService {}
public class TypeACardService : ICardService, ITypeACardService {
public TypeACardService( ICardValidator validator ) {
}
}
public class TypeBCardService : ICardService, ITypeBCardService {
public TypeBCardService( ICardValidator validator ) {
}
}
在使用Ninject时,我们能够根据所注入的类型来注入不同的具体实现。例如:
Bind<ICardValidator>().To<TypeAValidator>().WhenInjectedInto( typeof( ITypeACardService ) )
Bind<ICardValidator>().To<TypeBValidator>().WhenInjectedInto( typeof( ITypeBCardService ) )