そこで、WinFormsを使用してC#でMDIアプリケーションを構築しています。このシナリオでDRYをフォローする方法を一生理解することはできません。メインメニューストリップのtoolstripmenuitemsを使用して、新しい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を実装するための良い方法は何でしょうか?