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); }
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); }