Esempio n. 1
0
        public void Read([NotNull] CommandLineKeyValueStore commandLine, [NotNull] object model)
        {
            if (commandLine == null)
            {
                throw new ArgumentNullException(nameof(commandLine));
            }

            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (!mModelType.GetTypeInfo().IsInstanceOfType(model))
            {
                return;
            }

            foreach (var property in mProperties)
            {
                property.Item1.Prepare(commandLine);
            }

            foreach (var property in mProperties)
            {
                property.Item1.Visit(commandLine, property.Item2, model, mLog ?? new NullLogWriter());
            }
        }
        protected override Result PrepareOverride(CommandLineKeyValueStore parser)
        {
            parser.RegisterFlag(Name);
            parser.RegisterAlias(Name, ShortForm);

            return(Result.Success);
        }
Esempio n. 3
0
        public Result Prepare(CommandLineKeyValueStore parser)
        {
            if (parser == null)
            {
                throw new ArgumentNullException(nameof(parser));
            }

            return(PrepareOverride(parser));
        }
Esempio n. 4
0
        protected override Result <object> GetValueOverride(CommandLineKeyValueStore parser)
        {
            if (!parser.Exists(Name) || string.IsNullOrWhiteSpace(parser.Read(Name)))
            {
                return(Result.CreateError <Result <object> >($"Command line value \"{Name}\" not set."));
            }

            return(new Result <object>(parser.ReadMany(Name).ToArray()));
        }
        protected override Result <object> GetValueOverride(CommandLineKeyValueStore parser)
        {
            if (!parser.Exists(Name))
            {
                return(Result.CreateError <Result <object> >($"Command line switch \"{Name}\" not set."));
            }

            return(new Result <object>(parser.Exists(Name)));
        }
Esempio n. 6
0
        public Result Visit(CommandLineKeyValueStore parser, PropertyInfo property, object modelInstance, ILogWriter log)
        {
            if (parser == null)
            {
                throw new ArgumentNullException(nameof(parser));
            }

            if (property == null)
            {
                throw new ArgumentNullException(nameof(property));
            }

            if (modelInstance == null)
            {
                throw new ArgumentNullException(nameof(modelInstance));
            }

            var targetType = property.PropertyType.GetTypeInfo();

            var defaultValue = GetDefault(targetType);
            var valueResult  = GetValueOverride(parser);

            if (valueResult.HasError)
            {
                property.SetValue(modelInstance, defaultValue);
                log.WriteVerbose(valueResult.ErrorDescription);
                return(valueResult);
            }

            var castResult = ChangeType(valueResult.Data, targetType);

            if (castResult.HasError)
            {
                property.SetValue(modelInstance, defaultValue);
                log.WriteWarning(castResult.ErrorDescription);
                return(castResult);
            }

            property.SetValue(modelInstance, castResult.Data);
            return(Result.Success);
        }
 protected override Result <object> GetValueOverride(CommandLineKeyValueStore parser)
 {
     return(new Result <object>(parser.ReadTail().ToArray()));
 }
Esempio n. 8
0
 protected abstract Result <object> GetValueOverride([NotNull] CommandLineKeyValueStore parser);
Esempio n. 9
0
 protected virtual Result PrepareOverride([NotNull] CommandLineKeyValueStore parser) => Result.Success;