Ich versuche, IOC/DI-Container zu verwenden, aber wenn Sie ein Kind-Fenster erstellen, was ist die beste Praxis?IOC/DI-Container und Kind Fenster Erstellung Dilemma
Wo ich habe Dilemma ist:
public class ParentWindow : Form
{
public void OpenChildWindow()
{
var child = IocContainer.Instance.Resolve<ChildWindow>(); // big issue !!! an-ti server locator pattern
child.Show();
}
}
Oder
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();
}
}
Meine Lösung
public class ParentWindow : Form
{
private IFormFactory _factory
public ParentWindow(IFormFactory factory) // inject from IOC container
{
}
public void OpenChildWindow()
{
var child = _factory.CreateChildWindow();
child.Show();
}
}
Aber mit meiner Lösung, meine Fabrik Art meiner eigenen IOC-Container werden, Alle meine elterlichen Fenster müssen in einer Fabrik passieren, ist das nicht meine Fabrik wird der neue "Server Locator".
Gibt es eine andere bessere Lösung dafür?
Verwandte: https://stackoverflow.com/questions/38417654/winforms-how-to-register-forms-with-ioc-container/38421425#38421425 – Steven
@ Steven nicht mein Problem lösen – LeY