5

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

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

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

2 回答 2

6

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

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

于 2012-10-11T15:18:41.677 回答
5

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

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

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

所以它只根据需要创建。

于 2012-10-11T15:24:41.040 回答