/// <summary> /// Constructs a command /// </summary> /// <param name="name">Command name</param> /// <param name="description">Description</param> /// <param name="helpTopic">Help topic</param> /// <param name="onCommandExecuted">On command executed</param> /// <param name="arguments">Command arguments</param> public Command(string name, string description, string helpTopic, CommandExecutedDelegate onCommandExecuted, params CommandArgument[] arguments) : base(name) { if (onCommandExecuted == null) { throw new ArgumentNullException(nameof(onCommandExecuted)); } Description = description ?? throw new ArgumentNullException(nameof(description)); HelpTopic = helpTopic ?? throw new ArgumentNullException(nameof(helpTopic)); OnCommandExecuted += onCommandExecuted; Arguments = arguments ?? throw new ArgumentNullException(nameof(arguments)); }
/// <summary> /// Adds a command /// </summary> /// <param name="name">Command name</param> /// <param name="description">Description</param> /// <param name="helpTopic">Help topic</param> /// <param name="onCommandExecuted">On command executed</param> /// <param name="arguments">Arguments</param> /// <returns>Command if successful, otherwise "null"</returns> public ICommand AddCommand(string name, string description, string helpTopic, CommandExecutedDelegate onCommandExecuted, params CommandArgument[] arguments) { if (name == null) { throw new ArgumentNullException(nameof(name)); } if (description == null) { throw new ArgumentNullException(nameof(description)); } if (helpTopic == null) { throw new ArgumentNullException(nameof(helpTopic)); } if (onCommandExecuted == null) { throw new ArgumentNullException(nameof(onCommandExecuted)); } if (arguments == null) { throw new ArgumentNullException(nameof(arguments)); } ICommand ret = null; string trimmed_name = name.Trim().ToLower(); if (!commandLookup.ContainsKey(trimmed_name)) { ret = new Command(trimmed_name, description, helpTopic, onCommandExecuted, arguments); commandLookup.Add(trimmed_name, ret); } return(ret); }