我試圖使用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