需要使用反射調用的類定義如下:
class InvokeTest { #region 靜態方法 public static void StaticMethod(string para) { Console.WriteLine(para); } #endregion #region 實例方法 public void InstanceMethod(string para1,string para2) { Console.WriteLine(para1 + " " + para2); } #endregion }
使用Invoke調用方法如下:
public static void InvokeMethod<T>() where T:new () { /* * 對於靜態方法 */ // 第一步,使用反射獲取類的方法 var staticMethod = typeof(T).GetMethod("StaticMethod"); // 第二步,使用Invoke方法調用方法 staticMethod.Invoke(typeof(T), new object[] { "參數" }); /* * 對於實例方法 */ // 第一步,先構造實例 var instanceObj = new T(); // 第二步,使用Invoke方法調用類方法
instanceObj.GetType().GetMethod("InstanceMethod").Invoke(instanceObj, new object[] { "參數1", "參數2" });
//instanceObj.GetType().InvokeMember("InstanceMethod", System.Reflection.BindingFlags.InvokeMethod, null, instanceObj, new object[] { "參數1", "參數2" }); }
測試代碼如下:
static void Main(string[] args) { InvokeMethod<InvokeTest>(); Console.ReadLine(); }
測試結果:

