IOC/DI 컨테이너를 사용하려고하지만 하위 창을 만들 때 가장 좋은 방법은 무엇입니까?IOC/DI 컨테이너 및 하위 창 만들기 딜레마
나는 데 딜레마는 다음과 같습니다
public class ParentWindow : Form
{
public void OpenChildWindow()
{
var child = IocContainer.Instance.Resolve<ChildWindow>(); // big issue !!! an-ti server locator pattern
child.Show();
}
}
또는
public class ParentWindow : Form
{
private Container _container
public ParentWindow(Container container) // no, no, you have dependence on container
{
}
public void OpenChildWindow()
{
var child = _container.Resolve<ChildWindow>();
child.Show();
}
}
내 솔루션
public class ParentWindow : Form
{
private IFormFactory _factory
public ParentWindow(IFormFactory factory) // inject from IOC container
{
}
public void OpenChildWindow()
{
var child = _factory.CreateChildWindow();
child.Show();
}
}
하지만 내 솔루션 , 가지 내 자신의 IOC 컨테이너가 될 내 공장, 내 모든 부모 - 자식 창이 공장을 통과해야합니다, 내 공장이 새로운 "서버 위치 지정자"가되지 않습니다.
더 좋은 해결책이 있습니까?
관련 : https://stackoverflow.com/questions/38417654/winforms-how-to-register-forms-with-ioc-container/38421425#38421425 – Steven
@Steven 디는 아무튼 사용하여 내 문제 – LeY