2016-09-14 30 views
0

我配置了装饰如下NInject实例化多种服务

Bind<IEmailService>().To<EmailService>().WhenInjectedInto<LoggerEmailService>(); 
Bind<IEmailService>().To<LoggerEmailService>().WhenInjectedInto<ExceptionHandlerEmailService>(); 
Bind<IEmailService>().To<ExceptionHandlerEmailService>(); 

当我把一个破发点中的服务实现的构造函数,像ExceptionHandlerEmailService或者只是EmailService,我发现该服务被称为多次。我错过了什么?

回答

0

.InSingletonScope()是需要的。

Bind<IEmailService>().To<ExceptionHandlerEmailService>().InSingletonScope(); 
Bind<IEmailService>().To<LoggerEmailService>().WhenInjectedInto<ExceptionHandlerEmailService>(); 
Bind<IEmailService>().To<EmailService>().WhenInjectedInto<LoggerEmailService>();