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。次の行: プロパティの 1 つを変更します。次の行 (iGame = k.Get<IGame>("A");再び) 新しいインスタンスを再び取得します。

私が望むのは、既に使用したインスタンスを取得できるようにすることです。しかし、私はこの種のツールにまったく慣れていないので、何かが足りないと思います。

あなたが私を助けることができれば、ありがとう.

4

1 に答える 1

3

オブジェクトの有効期間を指定する必要があります。デフォルトでは、コンテナーは新しいインスタンスを作成します。

使用可能な方法は次のとおりです。

  • 範囲内
  • 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);
于 2012-04-04T11:58:50.810 に答える