У меня есть приложение Winforms, который использует Autofac для IoC/DIКак я могу получить текущий Autofac lifecyclescope и разрешить вложенные формы в Winform приложение
У меня есть настройки конфигурации autofac поэтому все формы могут быть решены через контейнер/ЛВП.
Я хочу внедрить каждую связанную с Winform информацию через инсталляцию конструктора.
Так что в моем приложении программы я создаю контейнер и корневой lifecyclescope и решить главную форму:
using (Autofac.IContainer container = Startup.Autofac.Initialize())
{
FormFactory winfactory = FormFactory.Init(container);
var form = FormFactory.CreateForm<Form1>();
Application.Run(form);
}
Это работает, как ожидалось, и мои услуги получают инъекции хорошо.
Теперь для взаимодействия с пользователем в основной форме требуется открытие новой формы. Поэтому основной форме необходимо разрешить и показать форму детали. Я хотел бы сделать это на текущем lifetimecope mainform, но я не знаю, как получить ссылку на него!
В MVC это похоже на интеграцию MVC/Autofac в пакетах Nuget, используя DependencyResolver.Current. Но это не доступно вне приложений MVC.
Может ли кто-нибудь быть любезным оказать мне некоторую помощь в этом и, в конечном итоге, некоторые рекомендации по разрешению вложенных форм в приложении Winforms?
Благодаря
Большое спасибо. Но менее хорошие новости, чем я бы надеялся ... –
Большое спасибо Travis за ваш совет по этому вопросу. Но менее хорошие новости, чем я бы надеялся ... К сожалению, очень сложно найти достойные советы о том, как правильно интегрировать Autofac в приложения Winform. Жаль, так как это место, где вам нужно быть экспертом в IoC и Autofac, чтобы убедиться, что вы не вводите патчи памяти или неправильные шаблоны с низкой производительностью в результате. Но я рассмотрю пакет CommonServiceLocator, как вы предлагаете. Еще раз спасибо .. –
Не забудьте принять ответ :) –