2

我在我的应用程序中使用了ninject IoC,特别是以下内容:

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

我想使用 Unity IoC 来实现它,但有人可以告诉我如何使它相同,以及它是什么意思“InSingletonScope()”?以下工作,但我担心它没有正确完成,因为可能需要指定单例。

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

2 回答 2

5

Unity 使用LifeTimeManager's.. 的概念,它带有本质上LifeTimeManager称为Singleton 的东西ContainerControlledLifetimeManager。您可以按如下方式使用它:

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

我不确定您是否在问题中询问 Singleton 是什么:

还有“InSingletonScope()”是什么意思?

In the context of an IoC container such as Ninject and Unity, a Singleton is an object that is the same each time you request it. In your example, every time you ask your container to resolve a RepositoryFactories object.. it will always be the same object; not a new instance.

于 2013-02-24T07:37:49.117 回答
0

根据这个你应该使用ContainerControlledLifetimeManager. 您的注册将是:

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