zoukankan      html  css  js  c++  java
  • C#通过反射获取类中的方法和参数个数,反射调用方法带参数

    using System;
    using System.Reflection;
    
    namespace ConsoleApp2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //反射获取 命名空间+类名
                string className = "ConsoleApp2.ClassSample";
                string methodName = "test1";
                //传递参数
                Object[] paras = new Object[] { "我的", "电脑" };
                var t = Type.GetType(className);
                object obj = Activator.CreateInstance(t);
    
                try
                {
                    #region 方法一
                    //直接调用
                    MethodInfo method = t.GetMethod("test2");
                    method.Invoke(obj, paras);
                    #endregion
    
                    #region 方法二
                    MethodInfo[] info = t.GetMethods();
                    for (int i = 0; i < info.Length; i++)
                    {
                        var md = info[i];
                        //方法名
                        string mothodName = md.Name;
                        //参数集合
                        ParameterInfo[] paramInfos = md.GetParameters();
                        //方法名相同且参数个数一样
                        if (mothodName == methodName && paramInfos.Length == paras.Length)
                        {
                            md.Invoke(obj, paras);
                        }
                    }
                    #endregion
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                Console.ReadKey();
            }
        }
    
        class ClassSample
        {
            public void test1(string para1)
            {
                Console.WriteLine("方式1 {0}________test111", para1);
            }
    
            public void test1(string para1, string para2)
            {
                Console.WriteLine("方式2 {0}________test111________{1}", para1, para2);
            }
    
            public void test2(string para1, string para2)
            {
                Console.WriteLine("方式3 {0}________test222________{1}", para1, para2);
            }
        }
    }
  • 相关阅读:
    python Windows环境下文件路径问题
    pycharm 取消连按两下shift出现的全局搜索
    python2 与 python3的区别
    Python安装PyOpenGL
    Protobuffer学习文档
    python bin文件处理
    python 项目自动生成requirements.txt文件
    pytest文档7-pytest-html生成html报告
    python from __future__ import division
    细说 Java 的深拷贝和浅拷贝
  • 原文地址:https://www.cnblogs.com/smartsmile/p/8474545.html
Copyright © 2011-2022 走看看