Я пытаюсь понять, как использовать NHibernate / Windsor в приложении Windows Forms.У меня есть это в моем основном методе:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var container = new WindsorContainer();
var containerAdapter = new WindsorContainerAdapter(container);
var MarketingDatabaseSessionFactory = new NHibernate.Cfg.Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.config")).BuildSessionFactory();
NCommon.Configure.Using(containerAdapter)
.ConfigureState<DefaultStateConfiguration>(stateConfig =>
stateConfig.UseCustomSessionStateOf<HttpSessionState>())
.ConfigureUnitOfWork<DefaultUnitOfWorkConfiguration>(x =>
x.AutoCompleteScope())
.ConfigureData<NHConfiguration>(config => config.WithSessionFactory(() => MarketingDatabaseSessionFactory)
.WithDistinctResults());
container.AddComponent("main", typeof(Form1));
container.Register(AllTypes.FromAssemblyNamed("ProductManager.Services").BasedOn(typeof(IService)).WithService.Select((t, baseType) => t.GetInterfaces()));
ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(container));
Form1 mainForm = container.Resolve<Form1>();
Application.Run(mainForm);
}
Это прекрасно работает, DI работает для всех моих услуг и для моей основной формы.Мой вопрос: как мне двигаться дальше?У меня работает первая форма, но как мне ввести зависимости в другие формы и элементы управления?В MVC есть способ зарегистрировать все ваши контроллеры, я ищу что-то похожее с формами, но я запутался, потому что вы должны явно создавать экземпляры форм.Поэтому, даже если я зарегистрирую каждую форму одну за другой, я не знаю, как отстрелить дочернюю форму или элемент управления, не решив все самостоятельно, что не соответствует сути.