Nancy和/或TinyIoC不尊重AsSingleton()

时间:2012-10-11 15:16:07

标签: c# nancy tinyioc

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

我按如下方式设置了Nancy bootstrapper:

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

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

与Daniel的答案一样..如果你正在进行实例注册,你也不需要AsSingleton,你也可以这样做:

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

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