Nancy 和/或 TinyIoC 不尊重 AsSingleton()



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

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

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

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

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

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

与Daniel的回答一样,如果您要进行实例注册,则也不需要AsSingleton,您也可以只做:

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

因此,它仅根据需要创建。

相关内容

  • 没有找到相关文章

最新更新