【问题标题】:Nancy and/or TinyIoC does not respect AsSingleton()Nancy 和/或 TinyIoC 不尊重 AsSingleton()
【发布时间】:2012-10-12 15:42:31
【问题描述】:

设置:我有一个几乎开箱即用的 Nancy + TinyIoC 设置,运行一个运行良好的 web 服务。它取决于各种(AsSingleton)服务类。但是这些不是作为单例注入的,每次都会创建一个新实例。

我已按如下方式设置了 Nancy 引导程序:

class MyBootStrapper : DefaultNancyBootstrapper
{
    protected override void ConfigureApplicationContainer(TinyIoCContainer container)
    {
        var cp = new CertificateProvider();
        container.Register(cp).AsSingleton();
    }
}

【问题讨论】:

    标签: c# nancy tinyioc


    【解决方案1】:

    在您的代码中,即使您删除了AsSingleton(),您仍然会有一个单例,因为您注册的不是类型或工厂,而是一个实例。 TinyIoC 无法通过该注册创建CertificateProvider 的新实例。

    我能想到的唯一可能的事情是引导程序本身被执行了多次,但这是一个完全不同的问题,与您的注册无关。

    【讨论】:

    • 谢谢。我不太确定它是如何工作的,因为文档似乎有点不清楚。
    【解决方案2】:

    您确定正在使用您的引导程序吗?它不是公开的,所以它很可能只是使用内置的,默认约定是非接口依赖的多个实例。

    与丹尼尔的回答一样。如果您要进行实例注册,您也不需要 AsSingleton,您也可以这样做:

    container.Register<CertificateProvider>().AsSingleton();
    

    所以它只是根据需要创建。

    【讨论】:

      猜你喜欢
      • 2014-09-12
      • 2017-07-11
      • 1970-01-01
      • 2012-09-18
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      相关资源
      最近更新 更多