/// <summary> /// Ibitialize instance. /// </summary> public CommandLineExtensibleService( [NotNull] IServiceProvider serviceProvider, [NotNull] Func <CommandLineRulesProviderInfo[]> providerInfosGetter, CommandQuantifier commandQuantifier) : base(() => CreateRules(serviceProvider, providerInfosGetter, commandQuantifier)) { if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } if (providerInfosGetter == null) { throw new ArgumentNullException(nameof(providerInfosGetter)); } }
/// <summary> /// Initializes a new instance. /// </summary> public CmdLineRules( CommandQuantifier commandQuantifier, [NotNull, ItemNotNull] CommandRule[] commands, [NotNull, ItemNotNull] OptionRule[] options) { if (commands == null) { throw new ArgumentNullException(nameof(commands)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } CommandQuantifier = commandQuantifier; Commands = commands; Options = options; }
private static CmdLineRules CreateRules( IServiceProvider serviceProvider, Func <CommandLineRulesProviderInfo[]> providerInfosGetter, CommandQuantifier commandQuantifier) { var infos = providerInfosGetter(); var cmdRules = new List <CommandRule>(); var optRules = new List <OptionRule>(); foreach (var info in infos) { var provider = (ICommandLineRulesProvider)info.ProviderType.CreateInstance(serviceProvider); cmdRules.AddRange(provider.GetCommands()); optRules.AddRange(provider.GetOptions()); } return(new CmdLineRules(commandQuantifier, cmdRules.ToArray(), optRules.ToArray())); }
/// <summary> /// Initializes a new instance. /// </summary> public CmdLineRules( CommandQuantifier commandQuantifier, [NotNull, ItemNotNull] CommandRule[] commands) : this(commandQuantifier, commands, new OptionRule[0]) { }