zoukankan      html  css  js  c++  java
  • 封装方法:通过方法名调用类内的方法

    调用本类的:

        public class Test2
        {
            public TypeMethod methods = new TypeMethod();
    
            public void Run()
            {
                //将需要调用的方法加入集合中,加入之后就可以输出方法描述并通过序号调用该方法了
                methods.Add("Method1", "这里是方法1", 1);
                methods.Add("Method2", "这里是方法2", 2);
    
                methods.Print();                //打印:有哪些功能,通过哪个序号可以调用该功能
                var name = methods.Select();    //选择功能(返回方法名)
    
                Invoke(name, null);             //调用方法
            }
    
            /// <summary>
            /// 根据方法名调用该类的某个方法(这个方法可以直接放到父类里,然后继承的子类就也都可以通过方法名调用具体的方法)
            /// </summary>
            /// <param name="methodName"></param>
            /// <param name="parameters"></param>
            public void Invoke(string methodName, object[] parameters)
            {
                var method = this.GetType().GetMethod(methodName);
                method.Invoke(this, parameters);
            }
    
            public void Method1()
            {
                Console.WriteLine("这里是方法1");
            }
    
            public void Method2()
            {
                Console.WriteLine("这里是方法2");
            }
        }
    
        public class TypeMethod
        {
            /// <summary>
            /// 方法集合
            /// </summary>
            private List<Item> methods = new List<Item>();
    
            public void Add(string name, string des, int order)
            {
                methods.Add(new Item { Name = name, Des = des, Order = order });
            }
    
            /// <summary>
            /// 输出各功能及对应的序号
            /// </summary>
            public void Print()
            {
                var ms = methods.OrderBy(m => m.Order).ToList();
                int i = 0;
                foreach (var item in ms)
                {
                    i++;
                    Console.WriteLine($" {i}、{item.Des}");
                }
            }
            /// <summary>
            /// 选择功能(返回功能的名称)
            /// </summary>
            /// <returns></returns>
            public string Select()
            {
                Console.Write(" 请选择您要执行的功能:");
                int key = Convert.ToInt32(Console.ReadLine());
                var ms = methods.OrderBy(m => m.Order).ToList();
                if (key > 0 && key <= methods.Count)
                {
                    return ms[key - 1].Name;
                }
                else
                {
                    Console.WriteLine("未选择有效的功能!");
                    return "";
                }
            }
        }
    
        public class Item
        {
            /// <summary>
            /// 名称
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// 描述
            /// </summary>
            public string Des { get; set; }
            /// <summary>
            /// 排序(使顺序更易控)
            /// </summary>
            public int Order { get; set; }
        }

    调用其他类的时候是比较类似的,可以参考:https://www.cnblogs.com/coderJiebao/p/CSharp09.html

  • 相关阅读:
    理解JavaScript Call()函数原理。
    数据结构水题大赛官方题解#3 XXX的stl
    数据结构水题大赛官方题解#2 XXX的脑白金
    数据结构水题大赛官方题解#1 XXX的面试
    P3390 矩阵快速幂
    2020.6.8 T1 棋子移动
    U68862 奶牛滑迷宫
    5月18日考试错误题目走迷宫
    最小生成树两种算法详解
    p1220关路灯(小优化)
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/12981083.html
Copyright © 2011-2022 走看看