Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NancyFx和TinyIoC为模块提供单个实例_C#_Nancy_Tinyioc - Fatal编程技术网

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

C# NancyFx和TinyIoC为模块提供单个实例,c#,nancy,tinyioc,C#,Nancy,Tinyioc,我有一个相当简单的问题。我正在使用Nancy,通过构造函数autoresolve传递一个windows窗体。如果我让nancy自动解析每个模块,它会创建表单的新实例,这不是我想要的。我想也许我可以在TinyIoC中注册我的表单实例,然后它总是使用这个实例,而不是每次创建一个新实例。但事实证明,这并不像这个想法那么容易实现 提前感谢我没有将窗口引用分配给构造函数,而是将其注册到TinyIoC并在默认构造函数中解析,从而解决了这个问题 //Registering in form var contai

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


提前感谢

我没有将窗口引用分配给构造函数,而是将其注册到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);

我没有将窗口引用分配给构造函数,而是将其注册到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);

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

比如:

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

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

比如:

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