private AbstractCommand GetCommand(string name) { var foundCommand = Commands.First(c => c !.GetName() == name); if (null == foundCommand) { throw CommandHandlerException.NotFound(name); } return(foundCommand); }
private void RegisterCommands() { var commandTypes = CliScope.DefinedTypes .Where(t => t.IsSubclassOf(typeof(AbstractCommand)) && !t.IsAbstract); foreach (var type in commandTypes) { Services.AddTransient(type); } Commands = commandTypes .Select(type => Services.BuildServiceProvider().GetService(type) as AbstractCommand) .Where(c => null != c); var duplicates = FindDuplicates(); if (0 != duplicates.Count()) { throw CommandHandlerException.DuplicatedNames(duplicates.Select(c => c.GetName())); } }