예제 #1
0
        /// <summary>
        ///     Processes the passed <paramref name="arguments"/> by applying
        ///     the mapping to all registered objects
        /// </summary>
        /// <param name="arguments">
        ///     The list of arguments passed via command line
        /// </param>
        /// <param name="options">
        ///     The <see cref="MapperOptions"/> passed to on of the mapping
        ///     methods
        /// </param>
        private void ProcessArgumentList(IEnumerable <Argument> arguments, MapperOptions options)
        {
            var argsList = arguments.ToList();

            foreach (var mapperData in this.mapperDatas)
            {
                foreach (var argument in argsList)
                {
                    //Argument is already mapped to some object. We do not map the same arg twice
                    if (argument.IsMapped)
                    {
                        continue;
                    }

                    MapCommandLineValueToSingleObject(argument,
                                                      mapperData);

                    if (mapperData.Errors.Any() && !options.ContinueOnError)
                    {
                        break;
                    }
                }
            }

            this.UnmappedArguments = argsList.Where(a => !a.IsMapped);
        }
예제 #2
0
        /// <inheritdoc />
        public void Map(IEnumerable <string> args, MapperOptions options)
        {
            // ReSharper disable once PossibleMultipleEnumeration
            Guard.AgainstNullArgument(nameof(args), args);
            Guard.AgainstNullArgument(nameof(options), options);

            this.CreateMapperDataObjects();

            // ReSharper disable once PossibleMultipleEnumeration
            this.ProcessArgumentList(args.ToArgument(options.OptionPrefix), options);
        }