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

2020-03-24 15:24:04 浏览数 (2)

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

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

代码语言:javascript复制
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);//带参数的
        }
    }
}

0 人点赞