c#輸入方法名來調用方法(反射)

https://www.cnblogs.com/sanyejun/p/8575458.htmlhtml

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 });

}
}spa

public class TestA
{
public void My(int a)
{
Console.WriteLine("哈哈哈哈哈" + a);
Console.ReadKey();
}
}htm

}對象

相關文章
相關標籤/搜索