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); }
public Result Prepare(CommandLineKeyValueStore parser) { if (parser == null) { throw new ArgumentNullException(nameof(parser)); } return(PrepareOverride(parser)); }
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))); }
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())); }
protected abstract Result <object> GetValueOverride([NotNull] CommandLineKeyValueStore parser);
protected virtual Result PrepareOverride([NotNull] CommandLineKeyValueStore parser) => Result.Success;