下記のようなアプリがあるとする。
・メニュー画面がある。
・そのメニューに複数のボタンがある。
・各ボタンを押すと、それぞれ別のWindowが立ち上がる。
#調子に乗る前の俺が書いたコード
// Window○○ は、自前のWindowクラス。
private void Button01_Click()
{
var w = new Window01();
w.Show();
}
private void Button02_Click()
{
var w = new Window02();
w.Show();
}
private void Button03_Click()
{
// 以下略
行数を節約するなら
new Window01().Show();
って書けば1行で書けるし、それでいいのかもしれない。
#調子に乗った俺が書いたコード
// Window○○ は、自前のWindowクラス。
/// <summary>
/// ウインドウを開く
/// <summary>
private void OpenWindow<T>() Where T : Window, new()
{
var w = new T();
w.Show();
}
private void Button01_Click()
{
OpenWindow<Window01>();
}
private void Button02_Click()
{
OpenWindow<Window02>();
}
private void Button03_Click()
{
// 以下略
Windowを開くメソッドが書きたかった。
だけど、インスタンスを生成してそのメソッドに渡すなら意味がない(Showすればいいだけだから)。
クラスを渡したら、メソッド内でインスタンスを生成して開いて欲しかった。
できたんだけど、インスタンス生成してShowする方が、シンプルでわかりやすくて良いのでは?という考えが消えない。