这是一些代码,
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");
再次)我再次获得一个新实例。
我想要的是能够检索我已经使用过的实例。 但我对这种工具完全不熟悉所以我想我错过了什么。
谢谢你,如果你可以帮助我。
答案 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);