2012-04-04 2 views
0

Вот код,Ninject/.NET MVC3 - Retriving экземпляры моего объекта

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"); 

На первом 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 () .Чтобы () .InSingletonScope() .Named («A»). WithConstructorArgument («ColorChoiceCount», 12); Спасибо. – TTT

+0

+1 для ссылки на блог Bobs, информативный и вдохновляющий –

Смежные вопросы