private IEnumerable <ArgumentInfo> GetOptionValuesForConstructor()
        {
            var firstCtor = _type
                            .GetConstructors()
                            .FirstOrDefault();

            List <ArgumentInfo> argumentInfos = new ArgumentInfoCreator(_settings)
                                                .GetArgumentsFromMethod(firstCtor)
                                                .ToList();

            foreach (ArgumentInfo argumentInfo in argumentInfos)
            {
                var optionInfo = (CommandOptionInfo)argumentInfo;
                optionInfo.SetValue(_app.Option(
                                        optionInfo.Template,
                                        optionInfo.AnnotatedDescription,
                                        optionInfo.CommandOptionType,
                                        _ => {},
                                        optionInfo.Inherited,
                                        optionInfo.TypeDisplayName,
                                        optionInfo.DefaultValue,
                                        optionInfo.IsMultipleType,
                                        optionInfo.AllowedValues));
            }

            return(argumentInfos);
        }
示例#2
0
        private IEnumerable <ArgumentInfo> GetOptionValuesForConstructor()
        {
            IEnumerable <ParameterInfo> parameterInfos = _type
                                                         .GetConstructors()
                                                         .FirstOrDefault()
                                                         .GetParameters();

            if (parameterInfos.Any(p => p.HasAttribute <ArgumentAttribute>()))
            {
                throw new AppRunnerException("Constructor arguments can not have [Argument] attribute. Please use [Option] attribute");
            }

            ArgumentInfoCreator argumentInfoCreator = new ArgumentInfoCreator(_settings);

            List <ArgumentInfo> argumentInfos = new List <ArgumentInfo>();

            foreach (var parameterInfo in parameterInfos)
            {
                argumentInfos.AddRange(argumentInfoCreator.ConvertToArgumentInfos(parameterInfo, ArgumentMode.Option));
            }

            foreach (ArgumentInfo argumentInfo in argumentInfos)
            {
                var optionInfo = (CommandOptionInfo)argumentInfo;
                optionInfo.SetValue(_app.Option(
                                        optionInfo.Template,
                                        optionInfo.AnnotatedDescription,
                                        optionInfo.CommandOptionType,
                                        _ => {},
                                        optionInfo.Inherited,
                                        optionInfo.TypeDisplayName,
                                        optionInfo.DefaultValue,
                                        optionInfo.IsMultipleType,
                                        optionInfo.AllowedValues));
            }

            return(argumentInfos);
        }