C# 利用反射调用类下的方法

1.主窗体下的代码

namespace TestReflection
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void comboBoxEdit1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string MethodName = comboBoxEdit1.SelectedItem.ToString();
            TestMethod(MethodName, MethodName);
        }

        /// <summary>
        /// 反射调用类中的方法
        /// </summary>
        /// <param name="MethodName"></param>
        /// <param name="Text"></param>
        private void TestMethod(string MethodName, string Text)
        {
            try
            {
                    1.Load(命名空间名称),GetType(命名空间.类名)
                Type type = Assembly.Load("TestReflection").GetType("TestReflection.Test");

                    2.GetMethod(需要调用的方法名称)
                MethodInfo method = type.GetMethod(MethodName);

                    3.调用的实例化方法(非静态方法)需要创建类型的一个实例
                object obj = Activator.CreateInstance(type);

                    4.方法需要传入的参数
                object[] parameters = new object[] { this, Text };

                    5.调用方法,如果调用的是一个静态方法,就不需要第3步(创建类型的实例)
                      相应地调用静态方法时,Invoke的第一个参数为null
                method.Invoke(obj, parameters);
            }
            catch
            {

            }
        }

    }
}


2.类中的代码

namespace TestReflection
{
    class Test
    {
        public void SayChinese(Form1 frm,string Text)
        {
            frm.labelControl1.Text = Text;
        }


        public void SayEnglish(Form1 frm, string Text)
        {
            frm.labelControl1.Text = Text;
        }

        public static void SayStatic(Form1 frm, string Text)
        {
            frm.labelControl1.Text = Text;
        }

    }
}



  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值