0

这是一些代码,

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

我想要的是能够检索我已经使用过的实例。但我对这种工具完全陌生,所以我想我错过了一些东西。

如果你能帮助我,谢谢。

4

1 回答 1

3

您需要指定对象的生命周期 - 默认情况下,容器将创建一个新实例。

可用的方法如下:

  • 在适用范围
  • 瞬态作用域
  • 线程范围内
  • 单例范围
  • 请求范围

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

您可能想要一个单例(游戏的单个实例):

k.Bind<IGame>().To<Game>().InSingletonScope().Named("A")
   .WithConstructorArgument("ColorChoiceCount", 12);
于 2012-04-04T11:58:50.810 回答