2016-12-08 7 views
0

내가 this SO 질문에 여기에 설명 된대로싱글을 의미 CreationPolicy.Shared 것을 알고에서 MEFs에 CreationPolicy.NonShared에 해당하는 것입니다.는 Ninject에

그럼 NonShared는 어떻습니까?

이렇게해야합니까?

Bind<IDataRepositoryFactory>().To<DataRepositoryFactory>().InTransientScope(); 

또는 나는

Bind<IDataRepositoryFactory>().To<DataRepositoryFactory>(); 

위의 두 가지의 차이점은 무엇처럼 어떤 범위없이 떠나야한다?

답변

2

Ninject의 기본 범위는 일시적입니다. 이는 실제로 요청할 때마다 새 인스턴스가 만들어 지므로 두 예제간에 차이가 없음을 의미합니다.

More on Ninject scopes here

:

  • 과도은 - 유형의 새 인스턴스가 하나가 요청 될 때마다 생성됩니다. 지정하지 않으면 기본 범위입니다.
  • 싱글 톤 - 유형의 단일 인스턴스 만 만들어지고 이후 인스턴스마다 동일한 인스턴스가 반환됩니다.
  • 스레드 - 유형 당 하나의 인스턴스가 스레드별로 생성됩니다.
  • 요청 - 유형의 인스턴스 하나가 각 웹 요청에 대해 만들어집니다. 이를 사용하기 전에 자세한 정보는 Ninject.Web.Common InRequestScope 기사를 참조하십시오.
  • Named, Call, Parent - 확장 기능으로 제공됩니다. 자세한 내용은 Ninject.Extensions.NamedScope 확장 프로그램을 참조하십시오.
  • 사용자 지정 - .InScope (Func selectScope) 메서드를 사용하여 자신의 범위를 쉽게 정의 할 수도 있습니다.