c#输入方法名来调用方法(反射)
https://www.cnblogs.com/sanyejun/p/8575458.html
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace zhiXing
{
class Program
{
static void Main(string[] args)
{
//方法1
/*
Type t = typeof(TestA);
MethodInfo mt = t.GetMethod("My");
TestA ta = new TestA();
string str = (string)mt.Invoke(ta, new object[] { 5 });
*/
//方法2
//加载程序集
Assembly s = Assembly.Load("zhiXing");
//得到类
Type tpe = s.GetType("zhiXing.TestA");
//得到方法
MethodInfo method = tpe.GetMethod("My");
//安全判断
{
//获取需要传入的参数
ParameterInfo[] parms = method.GetParameters();
//这里是判断参数类型
foreach (ParameterInfo ss in parms)
{
if (ss.ParameterType == typeof(int))
{
Console.WriteLine("参数类型匹配");
}
else
{
Console.WriteLine("参数类型不匹配");
}
}
}
//获取 类的对象
object obj = s.CreateInstance("zhiXing.TestA");
//调用
method.Invoke(obj, new object[] { 5 });
}
}
public class TestA
{
public void My(int a)
{
Console.WriteLine("哈哈哈哈哈" + a);
Console.ReadKey();
}
}
}