我正在使用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,它就会一直使用那个实例.
你在做什么有告诉TinyIOC"你想其中的一个,每次,叫我代表",所以如果你想用这个方法,你必须自己处理单方面.
除非您特别需要延迟创建,否则更容易:
container.Register(new Foo("value", c.Resolve ()));
那么只要你想要一个IFoo,它就会一直使用那个实例.