zoukankan      html  css  js  c++  java
  • 通过反射调用方法,包括传参数和获得返回值【源码下载】

    1、新建一个Node类 

        public class Node
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }

    2、添加两个方法,一个用于计算Node的数量,一个用于获得Node的名称

            /// <summary>
            /// 计算结点的数量
            /// </summary>
            /// <param name="lstNodes"></param>
            /// <returns></returns>
            public string CalcNodeCount(List<Node> lstNodes)
            {
                return "数量为:" + lstNodes.Count.ToString();
            }
            /// <summary>
            /// 获得节点的名称集合
            /// </summary>
            /// <param name="lstNodes"></param>
            /// <returns></returns>
            public string GetNodeNames(List<Node> lstNodes)
            {
                return "名称列表:" + string.Join(",", lstNodes.Select(c => c.Name).ToArray());
            }

    3、进行调用

    static void Main(string[] args)
            {
                string strNameSpace = "ReflectionDemo.Program";
                //定义一个方法名称的数组,用于循环执行
                List<string> lstMethods = new List<string> { "CalcNodeCount", "GetNodeNames" };
    
                //定义一个需要处理的数据源
                List<Node> lstNodes = new List<Node> { new Node { Id = 1, Name = "中国" }, new Node { Id = 2, Name = "美国" }, new Node { Id = 3, Name = "德国" } };
    
    
    
                Type type = Type.GetType(strNameSpace);//定义一个类型
                object instanceObj = System.Activator.CreateInstance(type); ;//定义一个变量用来存放实例化好的类型
    
                foreach (string methodName in lstMethods)//循环然后通过反射调用需要执行的方法,并打印出来执行结果
                {
                    MethodInfo instanceMethod = type.GetMethod(methodName, new Type[] { typeof(List<Node>) });//定义方法和定义方法的参数
    
                    List<object> lstArgs = new List<object>();
                    lstArgs.Add(lstNodes);
                    object[] arrayArgs = lstArgs.ToArray();//定义参数
    
                    string strResult = (string)instanceMethod.Invoke(instanceObj, arrayArgs);//调用方法
                    Console.WriteLine(strResult);
                }
                Console.ReadLine();
            }

     4、结果如下:

    源码下载:下载

  • 相关阅读:
    SharePoint
    北京的雨
    SharePoint2003安装问题解答
    SharePoint安装时“Service Unavailable”的解决办法
    SharePoint安装程序常见问题解答和故障排查指南,做个参考:)
    银弹的看法
    vue组件注册方式
    vue中template和render的区别
    前端需要注意的SEO
    公众号中H5页面分享给好友或朋友圈自定义图片或文字
  • 原文地址:https://www.cnblogs.com/wjx-blog/p/9004210.html
Copyright © 2011-2022 走看看