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