2

私は自分のアプリケーションで ninject IoC を使用していましたが、特に次のように使用していました。

kernel.Bind<RepositoryFactories>().To<RepositoryFactories>()
   .InSingletonScope();

Unity IoC を使用してこれを実装したいのですが、同じにする方法と、「InSingletonScope()」の意味を誰か教えてもらえますか? 次のように動作しますが、Singleton を指定する必要がある可能性があるため、正しく行われていないのではないかと心配しています。

container.RegisterType<RepositoryFactories, RepositoryFactories>();
4

2 に答える 2

5

Unity は の概念を使用します。それには、基本的にと呼ばれるLifeTimeManagerシングルトンが付属しています。以下のように使用します。LifeTimeManagerContainerControlledLifetimeManager

container.RegisterType<RepositoryFactories>(new ContainerControlledLifetimeManager(), /* other params */);

質問でシングルトンとは何かを尋ねているのかどうかはわかりません:

また、「InSingletonScope()」とはどういう意味ですか?

Ninject や Unity などの IoC コンテナーのコンテキストでは、Singleton は要求するたびに同じオブジェクトです。あなたの例では、コンテナにオブジェクトを解決するように依頼するたびにRepositoryFactories..それは常に同じオブジェクトになります。新しいインスタンスではありません。

于 2013-02-24T07:37:49.117 に答える
0

これによると、を使用する必要がありますContainerControlledLifetimeManager。登録は次のようになります。

container.RegisterType<RepositoryFactories>(new ContainerControlledLifetimeManager())
于 2013-02-24T07:37:10.330 に答える