public static T InternalAddNonTerminalCommandWithSettings <T, TBaseSettings, TDerivedSettings>(this T item, string name, Action <NonTerminalCommandBuilder <TDerivedSettings> > commandBuilder)
            where T : INonTerminalCommandWithSettingsBuilder <T, TBaseSettings>, ICommandBuilder
            where TBaseSettings : new()
            where TDerivedSettings : TBaseSettings, new()
        {
            var builder = new NonTerminalCommandBuilder <TDerivedSettings>(
                item.Command,
                name);

            item.Command.AddSubCommand(builder.Build(commandBuilder));
            return(item);
        }
예제 #2
0
        public static T InternalAddNonTerminalCommand <T>(this T item, string commandName, Action <NonTerminalCommandBuilder> commandBuilder)
            where T : INonTerminalCommandWithoutSettingsBuilder <T>, ICommandBuilder
        {
            ValidateCommandName(commandName);
            if (commandBuilder is null)
            {
                throw new ArgumentNullException(nameof(commandBuilder));
            }

            var builder = new NonTerminalCommandBuilder(item.Command, commandName);

            item.Command.AddSubCommand(builder.Build(commandBuilder));
            return(item);
        }