2013-04-22 3 views
2

ASP.NET MVC를 처음 접했고 Ninject를 사용하여 싱글 톤 범위에서 일부 유형을로드하는 데 도움이 필요합니다. 내 직업은 싱글 범위 내에서 이러한 유형의 바인딩 내가 그렇게하는 방법을 잘 모르겠습니다 Ninject 싱글 톤 범위 로딩


List<Type> types = loading some types into list here. 

foreach (var type in types.Where(O => O.Name.StartsWith("I"))) 
{ 
    Kernel.Bind(type).To(Type.GetType(type.FullName.Replace(".I", "."))); 
} 

----로

는 --- 기존 코드를하여 본다. kernel.Bind().To()

답변

3

는 또한 Ninject에 규칙 확장을 살펴 가지고

+1

이 줄은 foreach 루프 내에 있습니다. 여러 복사본을 남기는 것과 같은 문제가 있습니까 ?? – mmssaann

+0

"여러 복사본을 남겨 두는 것"이 ​​무슨 뜻인지 이해가 안됩니까? 'InSingletonScope()'은 Ninject에게 지정된 바인딩에 대해 첫 번째 해결시 하나의 인스턴스가 만들어 져야하고 타입이 요청 될 때마다 같은 인스턴스가 사용되어야한다는 것을 알린다. –

3

.InSingletonScope()을 넣어. 그것은 이런 것들을 훨씬 쉽게 만듭니다. 예를 들어 다음과 같이 작성할 수 있습니다.

kernel.Bind(x => 
x.FromThisAssembly() 
.SelectAllClasses() 
.Where(types.Contains) 
.BindDefaultInterface() 
.Configure(b => b.InSingletonScope())); 

유형 목록을 얻는 방법에 따라 더 쉽게 작성 될 수 있습니다. 위키에서 문서와 샘플을 확인하십시오.

https://github.com/ninject/ninject.extensions.conventions/wiki