我在我的应用程序中使用了ninject IoC,特别是以下内容:
kernel.Bind<RepositoryFactories>().To<RepositoryFactories>()
.InSingletonScope();
我想使用Unity IoC实现这一点,但有人可以说 我如何才能使它变得一样,它的意思又是什么&#34; InSingletonScope()&#34; ? 以下是有效的,但由于可能需要指定Singleton,我担心它没有正确完成。
container.RegisterType<RepositoryFactories, RepositoryFactories>();
答案 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())