/// <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));
     }
 }
Example #2
0
 /// <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()));
        }
Example #4
0
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 public CmdLineRules(
     CommandQuantifier commandQuantifier,
     [NotNull, ItemNotNull] CommandRule[] commands)
     : this(commandQuantifier, commands, new OptionRule[0])
 {
 }