2012-04-04 2 views
0

, 첫 iGame = k.Get<IGame>("A");Ninject에/.NET의 MVC3 - 내 개체의 가져 오는 중 오류 인스턴스 여기에 몇 가지 코드의

k.Bind<IGame>().To<Game>().Named("A") 
    .WithConstructorArgument("ColorChoiceCount", 12); 

iGame = k.Get<IGame>("A"); 
((Game)iGame).SelectedColor = new GameColor(System.Drawing.Color.Red); 
iGame = k.Get<IGame>("A"); 

나는 Game의 새로운 인스턴스를 얻을. 다음 줄 : 속성 중 하나를 변경합니다. 다음 줄 (iGame = k.Get<IGame>("A"); 다시) 새 인스턴스가 다시 나타납니다.

내가 원했던 것은 내가 이미 사용한 인스턴스를 검색 할 수 있다는 것입니다. 하지만 이런 도구에 완전히 익숙해서 뭔가 놓친 것 같아요.

도와 주셔서 감사합니다.

답변

3

개체의 수명을 지정해야합니다. 기본적으로 컨테이너는 새 인스턴스를 만듭니다. 다음

가능한 방법은 :

  • InScope
  • InTransientScope
  • InThreadScope
  • InSingletonScope
  • InRequestScope
,

http://blog.bobcravens.com/2010/03/ninject-life-cycle-management-or-scoping/

당신은 아마 (게임의 단일 인스턴스) 싱글 원하는 :

k.Bind<IGame>().To<Game>().InSingletonScope().Named("A") 
    .WithConstructorArgument("ColorChoiceCount", 12); 
+0

약간의 수정과 함께, 대답은 –

+0

올바른 업데이트 : k.Bind () .TO () .InSingletonScope() .Named ("A"). WithConstructorArgument ("ColorChoiceCount", 12); 고맙습니다. – TTT

+0

Bobs 블로그에 연결하는 +1, 유익하고 고무적인 –

관련 문제