当前位置:  开发笔记 > 编程语言 > 正文

Nancy使用构造函数参数创建单例

如何解决《Nancy使用构造函数参数创建单例》经验,为你挑选了1个好方法。

我正在使用Nancy和TinyIoC来解决依赖关系.

特别需要一个依赖项是应用程序生命周期单例.

如果我使用默认构造函数,它可以工作:

container.Register().AsSingleton();   // WORKS

但是如果我在构造函数上使用一些参数来尝试它,它不会:

container.Register((c, e) => new Foo("value", c.Resolve())).AsSingleton();
// FAILS with error "Cannot convert current registration of Nancy.TinyIoc.TinyIoCContainer+DelegateFactory to singleton"

没有.AsSingleton(),它再次起作用,但我没有得到一个单身人士:

container.Register((c, e) => new Foo("value", c.Resolve()));
// Works, but Foo is not singleton

有任何想法吗?我认为错误应该是显而易见的,但我找不到它.我用完了所有google-foo.


编辑

代码在这里运行:

public class Bootstrapper : DefaultNancyBootstrapper
{
    protected override void ConfigureApplicationContainer(TinyIoCContainer container)
    {
        base.ConfigureApplicationContainer(container);

        // here 
    }
}

Steven Robbi.. 7

你在做什么有告诉TinyIOC"你想其中的一个,每次,叫我代表",所以如果你想用这个方法,你必须自己处理单方面.

除非您特别需要延迟创建,否则更容易:

container.Register(new Foo("value", c.Resolve()));

那么只要你想要一个IFoo,它就会一直使用那个实例.



1> Steven Robbi..:

你在做什么有告诉TinyIOC"你想其中的一个,每次,叫我代表",所以如果你想用这个方法,你必须自己处理单方面.

除非您特别需要延迟创建,否则更容易:

container.Register(new Foo("value", c.Resolve()));

那么只要你想要一个IFoo,它就会一直使用那个实例.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有