public IEnumerable <IEnumerable <string> > GenCommandDetails(string cmdname, StringComparison stringComparison) { int cmdCount = cmdAttrs.Length; int hostCount = commandHostAttrs.Length; for (int i = 0; i < hostCount; i++) { if (commandHosts[i].GetValue(instance) is CommandObject cmdobj) { CommandHostAttribute _hostAttr = commandHostAttrs[i]; if (_hostAttr.IsCorrectName(cmdname, stringComparison)) { foreach (var def in cmdobj.GenCommandOverview()) { yield return(new string[] { _hostAttr.CommandName, ":" }); yield return(new string[] { " ", _hostAttr.GetDifinitionString() }.Concat(def)); } yield break; } } } for (int i = 0; i < cmdCount; i++) { CommandAttribute _cmdAttr = cmdAttrs[i]; CommandArguAttribute[] _paramInfos = paramAttrs[i]; if (_cmdAttr.IsCorrectName(cmdname, stringComparison)) { yield return(new string[] { _cmdAttr.GetDifinitionString() }.Concat(_paramInfos.Select(v => v.GetDifinitionString()))); if (!string.IsNullOrWhiteSpace(_cmdAttr.Description)) { yield return new string[] { " -", _cmdAttr.Description } } ; foreach (var _paramInfo in _paramInfos) { if (!string.IsNullOrWhiteSpace(_paramInfo.Description)) { yield return new string[] { " -" } } }
private bool CanExecuteCommandHost(string cmdname, IArgument[] args, StringComparison stringComparison) { for (int i = 0, iend = commandHostAttrs.Length; i < iend; i++) { CommandHostAttribute hostattr = commandHostAttrs[i]; if (hostattr.IsCorrectName(cmdname, stringComparison)) { if (commandHosts[i].GetValue(instance) is CommandObject host) { CommandParser.SplitCommandInfo(args, out var _cmdname, out var _args); if (host.CanExecuteCommand(_cmdname, _args, stringComparison)) { return(true); } } } } return(false); }