根据方法名执行方法的例子

今天在讲到动态执行方法的时候,我们讨论到了Delegate.CreateDelegate的方法。但也有下面这样的一个更加通用的方法:可以执行任何方法,传递任意个数的参数,而无需定义delegate

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Reflection;



namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            //这个例子演示了如何通过methodInfo动态执行方法



            MethodInfo mi = typeof(Helper).GetMethod("StaticMethod");

            mi.Invoke(null, null);//因为是静态方法,所以第一个参数直接忽略



            MethodInfo mi2 = typeof(Helper).GetMethod("InstanceMethod");



            Helper h = new Helper();

            mi2.Invoke(h, null);//因为是实例方法,所以第一个参数是一个对象实例,第二个参数代表了参数





            MethodInfo mi3 = typeof(Helper).GetMethod("Math");

            int result = (int)mi3.Invoke(h, new object[] { 1, 2 });

            //传递参数并接收结果

            Console.WriteLine(result);





            Console.Read();

        }

    }



    class Helper {

        public static void StaticMethod() {

            Console.WriteLine("静态方法在执行");

        }



        public void InstanceMethod() {

            Console.WriteLine("实例方法在执行");

        }



        public int Math(int a, int b) {

            return a + b;

        }

    }

}

你可能感兴趣的:(方法)