如何改写这段代码,换掉switch?
现在有一个方法,是给它一个字符串变量,然后实例化同样名称的window窗体并打开。
我用switch是可以实现,但总觉得不舒服,下面可能会有70多个case,不是要死人吗?
求教能不能用其他方法来实现?
理想状态:给这个方法一个字符串变量,就能实例化一个名称跟这个变量一样的window实例?
private void OpenWindow(string strWindowName)
{
//获取的变量名来打开对应的窗口
switch (strWindowName)
{
case "Window1":
//实例化Window1(已经引用了命名空间,Window1是存在的,可实例化的)
Window1 window1 = new Window1();
//打开Window1
window1.Show();
break;
case "Window2":
Window2 window2 = new Window2();
window2.Show();
break;
default:
break;
}
}
------解决方案--------------------用反射
Activator.CreateInstance
http://msdn.microsoft.com/en-us/library/d133hta4(v=vs.110).aspx
------解决方案--------------------赞成用反射
------解决方案--------------------private form getWindow(string typeName)
{
object ab = Activator.CreateInstance(null, typeName).Unwrap();
return (form)ab;
}
大概这么弄就可以了,typeName要写类型的全名