4
Ninject를 사용하여 여러 모듈을로드하고 있습니다. 두 모듈이 인터페이스에 대해 두 개의 서로 다른 구현을 바인딩하려고 시도하면 서비스에 대한 다중 바인딩이 허용되지 않는다는 오류가 발생합니다. Ninject, 다중 서비스 바인딩
내가 (유니티, 윈저, Spring.net 등) 을 모두 사용하고 다른 모든 IOC의 프레임 워크
는 인터페이스의 여러 구현을 '등록'할 수있는 능력을 가지고있다. 나를 실제 생활 예를 들어 보겠습니다 :public class HealtMonitorEmailAlertServiceModule : StandardModule
{
public override void Load()
{
this.Bind<IAlertService>().To<EmailAlertService>();
}
}
public class HealtMonitorSmsAlertServiceModule : StandardModule
{
public override void Load()
{
this.Bind<IAlertService>().To<SmsAlertService>();
}
}
public class Program
{
static void Main()
{
var emailService = new HealtMonitorEmailAlertServiceModule();
var smsService = new HealtMonitorSmsAlertServiceModule();
IKernel kernel = new StandardKernel(emailService, smsService);
kernel.Get<IAlertService>()
}
}
는 위의 예외를 생성, 내가 커널에로드 할 마지막 모듈에 등록 된 유형을 해결하기를 기대한다. 나는 Autofac을 사용하여 똑같은 접근법을 시도했고 예상대로 작동합니다.
Nat 응답에 감사드립니다. 곧 Ninject 2.0을 살펴 보겠습니다. 그나 저 좋은 일, 나는 당신의 닌자 기술에 깊은 인상을 받았습니다. –