本帖最后由 kangl_china 于 2009-11-30 19:22:06 编辑

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace WindowsFormsApplication5
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();            String game_name = "a";            this.GetType().GetMethod(game_name + "round").Invoke(this, new Object[] { "ssssssssss" });      
            }        public void around(string str)
            {
                MessageBox.Show("a " + str);
            }        public void bround(string str)
            {
                MessageBox.Show("b " + str);
            }        public void cround(string str)
            {
                MessageBox.Show("c " + str);
            }
        }
    }
      

  2.   

    反射调用方法
    object target = Assembly.GetExecutingAssembly().CreateInstance("", true);
    Type type = target.GetType();
    MethodInfo methodInfo = type.GetMethod(game_name + "round", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
    object[] args = new object[] { ""};
    object result = methodInfo.Invoke(target, args);
      

  3.   

    为什么不把game_name传递给函数呢?做个swich判断就可以了
      

  4.   

    简单通过game_name或IF判断调用不同方法
      

  5.   

    如果一定要把处理方法分开写,也可以考虑加个函数做swich处理;
    如:game_name="a";
    game_name="b";
    game_name="c";//根据game_name的值自动调用相应的函数
    game_name+round("ssssssssss");public void SwichRound(string name,string str)
    {
        swich(name)
        {
          //...
        }
    }public void around(string str)
    {}
    public void bround(string str)
    {}
    public void cround(string str)
    {}
      

  6.   

    game_name不多的话用分支应该更好,多了可能会是反射比较容易读懂