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

来源:互联网 发布:mac install ant 编辑:程序博客网 时间:2024/06/06 03:18

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 0