- 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
- {
- }
- }
- }
- }