Ninject / .NET MVC3 - 重现我的对象的实例

时间:2012-04-04 11:54:06

标签: asp.net asp.net-mvc-3 ninject

这是一些代码,

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");再次)我再次获得一个新实例。

我想要的是能够检索我已经使用过的实例。 但我对这种工具完全不熟悉所以我想我错过了什么。

谢谢你,如果你可以帮助我。

1 个答案:

答案 0 :(得分: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);