/// <summary> /// Excutes the specified test assembly. /// </summary> /// <param name="t">The t.</param> public static void Excute(Type t) { #if NETFULL var dataAccess = t.Assembly; #else var dataAccess = t.GetTypeInfo().Assembly; #endif IList<ExecuteFunc> list = new List<ExecuteFunc>(); foreach (var type in dataAccess.GetTypes()) { var clazz = type.GetConstructor(Type.EmptyTypes); if (clazz == null) continue; foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.Instance)) { var attr = method.GetCustomAttributes(typeof(DemoAttribute), false).FirstOrDefault() as DemoAttribute; if (attr != null) { object instance = Activator.CreateInstance(type); ExecuteFunc func = new ExecuteFunc(instance, method, attr.Description); list.Add(func); } } } if (list.Count > 0) { StringBuilder text = new StringBuilder(); lrTag("Select the use-case", "-", 20); for (int i = 0; i < list.Count; i++) { text.AppendFormat("[{0}] {1}{2}", i + 1, list[i], Environment.NewLine); } text.AppendLine("\r\n[0] \texit. "); string _display = text.ToString(); Console.Out.WriteLine(ConsoleColor.Green, _display); Console.Out.Write("select>"); string input = Console.ReadLine(); while (input != "0" && input != "quit" && input != "q" && input != "exit") { if (input.Equals("cls", StringComparison.OrdinalIgnoreCase)) { Console.Clear(); } int idx; if (int.TryParse(input, out idx)) { if (idx > 0 && idx <= list.Count) { Console.Clear(); Console.Out.WriteLine(ConsoleColor.DarkCyan, list[idx - 1] + " Running..."); list[idx - 1].Execute(); Console.Out.WriteLine(ConsoleColor.DarkCyan, list[idx - 1] + " Complete..."); } } Console.Out.WriteLine(); lrTag("Select the use-case", "-", 20); Console.Out.WriteLine(ConsoleColor.Green, _display); Console.Out.Write("select>"); input = Console.ReadLine(); } } }
/// <summary> /// Constructor. /// </summary> /// <param name="name">The name of the command. This will show up on a UI.</param> /// <param name="function">The funciton to execute when the command is run.</param> public EditInterfaceCommand(String name, ExecuteFunc function) { this.name = name; this.function = function; }