日期:2014-05-18 浏览次数:20960 次
不就是反射或者if语句的知识点嘛
using System;
using System.Windows.Forms;
using System.Reflection;
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Assembly assembly = Assembly.Load("WindowsFormsApplication4");
Type type = assembly.GetType("WindowsFormsApplication4."+textBox1.Text);
if (type != null)
{
object obj = Activator.CreateInstance(type);
MethodInfo m = type.GetMethod("ShowName");
if (m != null)
{
m.Invoke(obj, null);
}
}
}
}
public class 米饭
{
public void ShowName()
{
MessageBox.Show("米饭");
}
}
public class 馒头
{
public void ShowName()
{
MessageBox.Show("馒头");
}
}
public class 粥
{
public void ShowName()
{
MessageBox.Show("粥");
}
}
}
------解决方案--------------------
套餐的类型是已经已经建好的了吧,使用字典 Dictionary<string, 套餐类型> ,文本框输入后,新建一个套餐的实例,以输入的名称作为键,添加到字典里,查找时也以名称为键得到套餐实例
------解决方案--------------------
当然你可以用反射,用xml去创建对象,不过如果你不想这么麻烦的话,用一个简单的if/new就可以,
Series s;
if (textbox1.Text=="A")
{
s=new AS();
}
else if (textbox1.Text=="B")
{
s=new BS();
}
....