如何在使用Unity IoC时实现Ninject .InSingletonScope()

时间:2013-02-24 07:20:37

标签: c# asp.net-mvc ninject unity-container

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

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

我想使用Unity IoC实现这一点,但有人可以说 我如何才能使它变得一样,它的意思又是什么&#34; InSingletonScope()&#34; ? 以下是有效的,但由于可能需要指定Singleton,我担心它没有正确完成。

container.RegisterType<RepositoryFactories, RepositoryFactories>();

2 个答案:

答案 0 :(得分:5)

Unity使用LifeTimeManager的概念......它附带的是一个名为LifeTimeManager的单身ContainerControlledLifetimeManager。您可以按如下方式使用它:

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

我不确定你是否在问你的问题是什么?:

  

它的含义是什么&#34; InSingletonScope()&#34; ?

在Iin容器(如Ninject和Unity)的上下文中,Singleton是每次请求时都相同的对象。在您的示例中,每次您要求容器解析RepositoryFactories对象时...它将始终是同一个对象;不是新的实例。

答案 1 :(得分:0)

根据this,您应该使用ContainerControlledLifetimeManager。 您的注册将是:

container.RegisterType<RepositoryFactories>(new ContainerControlledLifetimeManager())