C# 通過反射調用類方法


需要使用反射調用的類定義如下:

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

測試結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM