NancyFx和TinyIoC为模块提供单实例

时间:2013-04-20 10:23:11

标签: c# nancy tinyioc

我有一个相当简单的问题。我使用Nancy的Windows窗体(通过构造函数(autoresolve))。如果我让nancy自动解决每个模块,它会创建一个新的表单实例,这不是我想要的。我想也许我可以在TinyIoC中注册我的表单实例然后它总是只使用这个实例而不是每次创建一个新实例。但事实证明这并不像想法那么简单。

提前致谢

2 个答案:

答案 0 :(得分:3)

你应该在引导程序中执行此操作

类似的东西:

public class MyBootstrapper: DefaultNancyBootstrapper
{
    ConfigureApplicationContainer (TinyIoCContainer container)
    {
        //the .AsSingleton() instructs TinyIOC to make only one of those.
        container.Register<IMessageDeliverer>().AsSingleton();
        base.ConfigureApplicationContainer (container);            
    }
}

答案 1 :(得分:2)

我通过不将窗口引用分配给构造函数但通过将其注册到TinyIoC并将其解析为默认构造函数来解决这个问题

//Registering in form
var container = TinyIoCContainer.Current;
container.Register<IMessageDeliverer>(this);

//Resolving in Module Constructor
var container = TinyIoCContainer.Current;
IMessageDeliverer mdl = container.Resolve<IMessageDeliverer>();
setDeliverer(mdl);