调用本类的:
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