0

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

提前致谢

4

2 回答 2

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);            
    }
}
于 2013-04-21T08:17:41.070 回答
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);
于 2013-04-20T11:42:56.717 回答