C# Nancy和/或TinyIoC不尊重AsSingleton()
设置:我有一个几乎开箱即用的Nancy+TinyIoC设置,运行一个运行良好的Web服务。它取决于各种(阿辛格尔顿)服务类别。但是,这些不是作为单例注入的,每次都会创建一个新实例 我已按如下方式设置Nancy引导程序:C# Nancy和/或TinyIoC不尊重AsSingleton(),c#,nancy,tinyioc,C#,Nancy,Tinyioc,设置:我有一个几乎开箱即用的Nancy+TinyIoC设置,运行一个运行良好的Web服务。它取决于各种(阿辛格尔顿)服务类别。但是,这些不是作为单例注入的,每次都会创建一个新实例 我已按如下方式设置Nancy引导程序: class MyBootStrapper : DefaultNancyBootstrapper { protected override void ConfigureApplicationContainer(TinyIoCContainer container)
class MyBootStrapper : DefaultNancyBootstrapper
{
protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
var cp = new CertificateProvider();
container.Register(cp).AsSingleton();
}
}
在代码中,即使删除
AsSingleton()
,您仍然会有一个单例,因为您注册的不是类型或工厂,而是实例。TinyIoC无法使用该注册创建新的CertificateProvider
我能想到的唯一可能的事情是引导程序本身被执行多次,但这是一个完全不同的问题,与您的注册无关。您确定您的引导程序正在使用吗?它不是公共的,所以很可能只是使用内置的,默认约定是非接口依赖的多个实例 就像丹尼尔的回答一样。。如果您正在进行实例注册,您也不需要AsSingleton,您不妨执行以下操作:
container.Register<CertificateProvider>().AsSingleton();
container.Register().AsSingleton();
所以它只是根据需要创建的。谢谢。我真的不确定这是如何工作的,因为文档似乎有点不清楚。