public IHandleConDepCommands Resolve() { try { if (_args.Length == 0) { return(new CmdHelpHandler(Args)); } var cmdName = CmdName.ToLower(); if (cmdName == "/?" || cmdName == "-?" || cmdName == "--help" || cmdName == "-help" || cmdName == "-h" || cmdName == "--h") { return(new CmdHelpHandler(Args)); } var conventionType = GetType().Assembly.GetTypes().Single(type => type.Name == "Cmd" + CmdName + "Handler"); return((IHandleConDepCommands)conventionType.GetConstructors().First().Invoke(new object[] { Args })); } catch (Exception ex) { throw new ConDepCmdParseException($"The command [{CmdName}] is not known to ConDep.", ex); } //var instance = conventionType.Assembly.CreateInstance(conventionType.FullName); //return instance; //if (args == null || args.Length == 0) //{ // return new CmdHelpHandler(new CmdHelpParser(args), new CmdHelpValidator(), new CmdHelpWriter(System.Console.Out)); //} //var cmd = args[0].ToLower(); //if (cmd == "deploy") // return new CmdDeployHandler(new CmdDeployParser(args), new CmdDeployValidator(), new CmdHelpWriter(System.Console.Out)); //if (cmd == "encrypt") // return null; //if (cmd == "decrypt") // return null; //if (cmd == "help") // return new CmdHelpHandler(new CmdHelpParser(args), new CmdHelpValidator(), new CmdHelpWriter(System.Console.Out)); //throw new ConDepCmdParseException("No command found."); }