2009-09-30 4 views
3

, 난 그런 내가 할 whenver 것으로, 특정 구현에 바인딩 할 수 있습니다 알고ninject를 사용하여 구현을 즉시 변경할 수 있습니까? Ninject에 사용

ISomeCache myCache = Ninject.Get<ISomeCache>(); 

그것은 내가에 Ninject에 바인딩 내 구체적인 구현을로드합니다.

데이터베이스 (웹 응용 프로그램)에서 사용하려는 구체적인 구현을 저장한다고 말하면 관리자 패널에서 해당 구현을 변경하면 원하는 클래스를 즉시 사용해야합니다.

이것이 가능합니까?

답변

5

실행중인 컨텍스트를 결정할 수 있다면 그렇습니다. GetSiteContext는 당신이 실행하는지 판별 콘텍스트 쓴다 방법이다

kernel.Bind<IMyService>().To<MyUserService>().When(request => GetSiteContext() == "user"); 

kernel.Bind<IMyService>().To<MyAdminService>().When(request => GetSiteContext() == "admin"); 

. .When(...)는 (Predicate<IRequest> 같음) 파라미터로 Func<IRequest,bool> 걸린다.

관련 문제