static async Task Main(string[] args) { typeof(Program).Assembly.GetTypes().Where(c => c.IsInherit(typeof(IXCommand))).ForEach(c => { var cmd = Activator.CreateInstance(c) as IXCommand; ConsoleCommand.Add(cmd.ExecuteAsync, cmd.Description); }); await ConsoleCommand.Run(); }
static ConsoleCommand() { ConsoleCommand.Add((token) => Task.Factory.StartNew(() => { var builder = new StringBuilder(); for (var i = 0; i < Commands.Count; i++) { var a = Commands.Skip(i).Take(1).First(); var tip = a.Description; if (tip == string.Empty) { tip = a.Action.Method.Name; } builder.AppendLine(string.Format("{0}:{1}", i, tip)); } Info(builder.ToString()); }), "show menu", true, false); ConsoleCommand.Add((token) => Task.CompletedTask, "exit", false, false); }