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