【问题标题】:NancyFx and TinyIoC provide single instance to moduleNancyFx 和 TinyIoC 为模块提供单个实例
【发布时间】:2013-04-13 17:01:31
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: c# nancy tinyioc


    【解决方案1】:

    您可能应该在引导程序中执行此操作

    类似:

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

    【讨论】:

      【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 2016-05-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-16
        • 2020-05-30
        • 1970-01-01
        • 2023-03-21
        • 2013-08-31
        • 1970-01-01
        相关资源
        最近更新 更多