2011-03-11 7 views
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>(); 
    } 
} 

이것은 잘 작동하는 것 같다 :이를 위해 나는 다음과 같은 방법을 쓴 찾고있어? 나는 커널 인스턴스를 생성하는 오버 헤드가 염려 스럽다.

답변

2

설명서를 읽은 후 https://github.com/ninject/ninject.web.mvc/wiki/MVC3 샘플 프로젝트를 확인하십시오.

+0

감사합니다. Remo. 사과는 사전에 있지만 인내심을 시험해 볼 수있을 것 같아서 ... 인터페이스가 있고 그 인터페이스를 구현하는 두 개의 클래스가 있다고 가정 해 보겠습니다. 내 코드에서는 간단한 콘솔 어플리케이션 (예를 들어)을 만들고 싶습니다. 인터페이스의 인스턴스입니다. 당신은 말 그대로 NinjectModule을 기반으로 클래스를 정의한 다음 Ninject StandardKernel 객체를 즉석에서 만들고이를 사용하여 구체적인 인스턴스를 Get() 할 수 있습니까? – Neilski

+0

일반적으로 응용 프로그램의 부트 스트 래퍼에 구성된 커널이 하나도 없습니다. 그것은 가능한 한 적게 사용됩니다. 많은 응용 프로그램은 필요한 모든 서비스를 만드는 데 필요한 하나의 호출 만 있습니다. MVC3의 경우에는 전혀 호출 할 필요가 없습니다. –