NancyFx и TinyIoC предоставляют один экземпляр для модуля

У меня довольно простой вопрос. Я использую Нэнси с формой Windows (передается через конструктор (autoresolve)). Если я позволю nancy автоматически разрешить каждый модуль, он создаст новый экземпляр формы, а это не то, что я хочу. Я подумал, что, возможно, я смогу зарегистрировать свой экземпляр формы в TinyIoC, и тогда он всегда будет использовать только этот экземпляр вместо того, чтобы каждый раз создавать новый. Но это оказалось не так просто для реализации, как идея.

заранее спасибо

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);

Вы, вероятно, должны сделать это в загрузчике

что-то вроде:

public class MyBootstrapper: DefaultNancyBootstrapper
{
    ConfigureApplicationContainer (TinyIoCContainer container)
    {
        //the .AsSingleton() instructs TinyIOC to make only one of those.
        container.Register<IMessageDeliverer>().AsSingleton();
        base.ConfigureApplicationContainer (container);            
    }
}
Другие вопросы по тегам