Windows Forms 응용 프로그램에서 NHibernate/Windsor를 사용하는 방법을 알아 내려고하고 있습니다. 나는 내 주요 방법이 있습니다윈저에 양식 등록 및 사용
좋은 작품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에는 모든 컨트롤러를 등록 할 수있는 방법이 있습니다. 폼과 비슷한 것을 찾고 있습니다.하지만 폼을 명시 적으로 인스턴스화해야하기 때문에 혼란 스럽습니다. 그래서, 내가 각 폼을 하나씩 등록하더라도, 내가 어떻게하면 아이를 잃어 버릴지 모르는 모든 것을 해결하지 않고도 아이 폼이나 컨트롤을 싹쓸이 할 수 있을지 모르겠다.
고마워요. 내가 보니이 예의 적절한 예를 찾을 수 없었습니다. – Nick
그 두 번째! 훌륭한 기사. –