首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

变量与对象命名有关问题

2012-06-17 
变量与对象命名问题现在我需要动态生成泛型集合的对象,在winForm中,文本框输入套餐的名称,然后点击添加,需

变量与对象命名问题
现在我需要动态生成泛型集合的对象,在winForm中,文本框输入套餐的名称,然后点击添加,需要创建面向套餐类的对象,如何用我输入的变量名称来创建对象,求解,求大神,求救

[解决办法]

C# code
不就是反射或者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();
}
....

热点排行