动态调用类中的方法(无)(有)参数
1、Type类,方法用Invoke调用的时候就 使用null:表示该方法是无参数的
2、Type类,方法用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);//带参数的 } } }