NancyFx和TinyIoC为模块提供单个实例
本文关键字:单个 实例 模块 TinyIoC NancyFx | 更新日期: 2023-09-27 18:10:11
我有一个相当简单的问题。我使用Nancy与windows窗体(通过构造函数(autoresolve)传递)。如果我让nancy自动解析每个模块,它会创建一个新的表单实例,这不是我想要的。我想也许我可以在TinyIoC注册我的表单实例,然后它总是使用这个实例,而不是每次创建一个新的。但事实证明,这并不像这个想法那么容易实现。
Thanks in advance
你应该在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);