• 封装方法:通过方法名调用类内的方法


    调用本类的:

        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

  • 相关阅读:
    机房管理系统
    Red_Black_Tree C++
    Binary_Seach_Tree(BST) C++
    贪吃蛇小笔记
    转-Unix系统进程对SIGTERM、SIGUSR1和SIGUSR2信号处理
    My Dev Env
    mac gdb home-brew
    pub python
    ioctl siocgifhwaddr mac os x
    macbook与外接显示器
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/12981083.html
Copyright © 2020-2023  润新知