【问题标题】:How can I implement Ninject .InSingletonScope() when using Unity IoC使用 Unity IoC 时如何实现 Ninject .InSingletonScope()
【发布时间】:2013-02-24 15:45:37
【问题描述】:

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

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

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

container.RegisterType<RepositoryFactories, RepositoryFactories>();

【问题讨论】:

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


    【解决方案1】:

    Unity 使用LifeTimeManager 的概念。它带有一个本质上是单例LifeTimeManager,称为ContainerControlledLifetimeManager。您可以按如下方式使用它:

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

    我不确定您是否在问什么是单例:

    “InSingletonScope()”是什么意思?

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-30
        • 1970-01-01
        • 1970-01-01
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多