所以我正在使用 WinForms 在 C# 中构建一个 MDI 应用程序。在这种情况下,我一生都无法弄清楚如何遵循 DRY。我正在使用我的主菜单条中的工具条菜单项打开新的 MDI 子项。我重用了“NewChild”方法作为每个事件处理程序。我试图不必为每个子窗口重复自己,因为它们都遵循相同的实例化模式。
我研究了泛型并使用了 Type 类,但它并没有真正让我到达我想要的地方。理想情况下,我只想说
// etc...
TypeOfForm = ConfigurationForm;
}
new TypeOfForm();
但我不认为这种丢失的语言结构存在。
public partial class MainForm : Form
{
private AboutForm aboutForm;
private ConfigurationForm configForm;
private ResultsForm resultForm;
private LogForm logForm;
private void NewChild(object sender, EventArgs e)
{
Form newForm;
if (sender == testConfigurationToolStripMenuItem)
{
if (configForm == null)
{
configForm = new ConfigurationForm();
}
newForm = configForm;
}
else if (sender == resultsToolStripMenuItem)
{
if (resultForm == null)
{
resultForm = new ResultsForm();
}
newForm = resultForm;
}
else if (sender == logToolStripMenuItem)
{
if (logForm == null)
{
logForm = new LogForm();
}
newForm = logForm;
}
else
{
return;
}
newForm.MdiParent = this;
newForm.Disposed += new EventHandler(ChildDisposed);
newForm.Show();
}
}
在这种情况下实施 DRY 的好方法是什么?