动态调用类中的方法(无)(有)参数

1Type类,方法用Invoke调用的时候就 使用null:表示该方法是无参数的

2Type类,方法用Invoke调用的时候就 使用new object[] { "肖名" }传递参数:表示该方法是有参数的

using System;

using System.Collections.Generic;

using System.Linq;

using System.Reflection;

using System.Text;

using System.Threading.Tasks;

 

namespace 动态调用类中的方法

{

    class Program

    {

        static void Main(string[] args)

        {

            #region Type类,方法用Invoke调用的时候就 使用null:表示该方法是无参数的

            //Type tp = typeof(Person);

            //MethodInfo meth = tp.GetMethod("Say");//2、调用这个类中的Say方法,,注意:没有参数!!!

            //object obj = Activator.CreateInstance(tp);//4、创建object对象,把tp放进去,就会返回一个Person的对象

 

            //meth.Invoke(obj, null);  //     当在派生类中重写时,调用具有给定参数的反射的方法或构造函数。

            ////5、也就是说,调用的方法Say(),是没有参数的,那么在用Invoke调用的时候就 使用null:表示该方法是无参数的

            ////3、先写上一个括号,发现,第一个参数是object 类型的,没有object类型,所以要先创建object类型 

            #endregion

 

            #region Type类,方法用Invoke调用的时候就 使用new object[] { "肖名" }传递参数:表示该方法是有参数的

            Type tp = typeof(Person);

            MethodInfo meth = tp.GetMethod("Say");

            object obj = Activator.CreateInstance(tp);

            meth.Invoke(obj, new object[] { "肖名" });//new object[]是object类型  ,就是方法Say()的传递的参数 String Str

            Console.ReadKey(); 

            #endregion

        }

    }

    public class Person//1首先,建一个类

    {

        //public void Say()// null的时候的方法,表示是无参数的方法Say

        public void Say(string Str)

        {

            //Console.WriteLine("大家好!");

            Console.WriteLine("大家好!"+Str);//带参数的

        }

    }

}

 

posted @ 2015-05-29 21:39  t800  阅读(253)  评论(0编辑  收藏  举报