NancyFx和TinyIoC为模块提供单个实例

本文关键字:单个 实例 模块 TinyIoC NancyFx | 更新日期: 2023-09-27 18:10:11

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

Thanks in advance

NancyFx和TinyIoC为模块提供单个实例

你应该在bootstrapper

类似:

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

我通过不将窗口引用分配给构造函数来解决这个问题,而是通过将其注册到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);