2011-11-25 18 views
1

ninject 모듈에 전체 범위를 제공해야하며 모듈을 통해이를 주입하는 것이 가장 좋습니다.ninject 모듈에 대한 인수

현재 모듈 용 어셈블리를 검색 중이므로 이러한 인수를 제공하는 방법을 결정할 수 없습니다 (깔끔하게).

나는 콘솔 응용 프로그램을 가지고 있으며 응용 프로그램에 대한 인수를 기반으로 유형의 구현을 선택하고 싶습니다.

문제는 이러한 유형이 조회시에 결정되는 인수의 특정 비 직렬화에 종속된다는 것입니다. 내가하고 싶은 무엇

이 같은 것입니다 :

public class Module : MyNinjectModule<Module> 
{ 
    private enum FictionalEnum 
    { 
     FirstType, 
     SecondType 
    } 

    private string[] _args; 

    private FictionalEnum Type 
    { 
     get 
     { 
      return IsFirstType(_args) 
         ? FictionalEnum.FirstType 
         : FictionalEnum.SecondType; 
     } 
    } 

    public Module(string[] rawArgs) 
    { 
     _args = rawArgs; 
    } 

    protected override void LoadCustomBindings() 
    { 
     Bind<IBaseType>().To<FirstImpl>() 
      .When(req => this.Type == FictionalEnum.FirstType); 

     Bind<IBaseType>().To<SecondImpl>() 
      .When(req => this.Type == FictionalEnum.SecondType); 
    } 
} 

사람이 이것에 대한 어떤 제안이 있습니까?

답변

1

내 생각에이 논리는 모듈에 속하지 않습니다. 모든 인스턴스를 주입 한 다음 인스턴스에서 어떤 팩토리를 가져 오거나 삽입 할 것인지를 응용 프로그램에서 결정하고 팩토리가 인수에 따라 올바른 유형을 만들도록합니다.