1
Ninject (MVC 웹 응용 프로그램)를 사용하여 첫 번째 프로젝트를 개발 중이며 Ninject의 올바른/최선의 사용에 관한 질문이 있습니다.Ninject 구현에 대한 조언
인터페이스를 구체적인 클래스에 바인딩하는 NinjectModule을 설정했지만 이제는 코드 내에서 인터페이스 객체의 인스턴스를 만들고 싶습니다.
내 질문은IMyRepository tempDB = ControllerFactory.GetRoomarRepository();
는,이/오른쪽 가장 좋은 방법은 난 결과를 달성하기 위해 ...
public class NinjectControllerFactory : DefaultControllerFactory {
private class MyServices : NinjectModule {
...
}
public static IMyRepository GetMyRepository()
{
IKernel kernel = new StandardKernel(new MyServices());
return kernel.Get<IMyRepository>();
}
}
이것은 잘 작동하는 것 같다 :이를 위해 나는 다음과 같은 방법을 쓴 찾고있어? 나는 커널 인스턴스를 생성하는 오버 헤드가 염려 스럽다.
감사합니다. Remo. 사과는 사전에 있지만 인내심을 시험해 볼 수있을 것 같아서 ... 인터페이스가 있고 그 인터페이스를 구현하는 두 개의 클래스가 있다고 가정 해 보겠습니다. 내 코드에서는 간단한 콘솔 어플리케이션 (예를 들어)을 만들고 싶습니다. 인터페이스의 인스턴스입니다. 당신은 말 그대로 NinjectModule을 기반으로 클래스를 정의한 다음 Ninject StandardKernel 객체를 즉석에서 만들고이를 사용하여 구체적인 인스턴스를 Get() 할 수 있습니까? – Neilski
일반적으로 응용 프로그램의 부트 스트 래퍼에 구성된 커널이 하나도 없습니다. 그것은 가능한 한 적게 사용됩니다. 많은 응용 프로그램은 필요한 모든 서비스를 만드는 데 필요한 하나의 호출 만 있습니다. MVC3의 경우에는 전혀 호출 할 필요가 없습니다. –